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