bcp を使用することで、テーブルの内容をエクスポートすることができますが、
format ファイルの中身を見ると分かるように、完全なスキーマ・主キー情報などはエクスポートされないため、
それを元に、インポート先にテーブルが無い状態から、テーブル自体を作成しながらインポート/リストアすることはできないようです。
(何らか工夫してできたらごめんなさい ^^;)
スキーマ情報は、データーベースを右クリック>すべてのタスク の中に、「スクリプトを生成」がありますので、
それを使用して、すべてのテーブルを一括でスクリプト化することで、エクスポートすることができます。
そのスクリプトを、インポート先の SQL SERVER で実行することで、スキーマ構造だけをまず作成することができます。
(クエリウィンドウで実行します)
bcp に話を戻すと、データーベース階層下のテーブル全てを、一括で処理する(データをエクスポートしてファイルにする)には、
コマンドラインスクリプトを書かなければなりません。少し手がかかるので、以下に簡単なプログラムを用意しました。
まず、テーブルの一覧を取得しなければなりません。エクスポートする元のSQLサーバーの、
SQL Server Management Studio にて、新しいクエリを作成し、
select * from sys.objects where type = 'U'
を実行してください。テーブルが列挙されますので、その名前の部分をコピーしてください。
システムテーブルなどが含まれていないかチェックし、含まれていたら削除してください。
そのテーブル名の一覧(改行区切り)を、以下に貼り付けてください。
作成されたコマンドは、bat ファイルにして実行するか、コマンドプロンプトにそのまま貼り付けて実行してください。
コマンドプロンプトは、管理者で起動すると確実です。
テーブルの内容を一度クリアする場合は、「テーブル内容削除用」を使用してください。
追記:CSV形式ですと、デリミタ設定の不具合によって、正しくインポートできないことがありましたので、
SQL SERVER ネイティブ形式(エクスポート用2、インポート用2)でもコマンドが出力されるようになっています。
これも、調べれば CSV のままで、データの当該部分をエスケープするようなコマンドがあるのかもしれません。
以上で、説明は終了です。
|