WINDOWS及びサーバー関連の話題、TIPS & テクニック の一覧に戻る

SQL SERVER における、bcpのエクスポート・インポートを利用したデーターベースのバックアップとリストアの方法について

SQL SERVER における、bcpのエクスポート・インポートを利用したデーターベースのバックアップとリストアの方法について


bcp を使用することで、テーブルの内容をエクスポートすることができますが、
format ファイルの中身を見ると分かるように、完全なスキーマ・主キー情報などはエクスポートされないため、
それを元に、インポート先にテーブルが無い状態から、テーブル自体を作成しながらインポート/リストアすることはできないようです。
(何らか工夫してできたらごめんなさい ^^;)

スキーマ情報は、データーベースを右クリック>すべてのタスク の中に、「スクリプトを生成」がありますので、
それを使用して、すべてのテーブルを一括でスクリプト化することで、エクスポートすることができます。
そのスクリプトを、インポート先の SQL SERVER で実行することで、スキーマ構造だけをまず作成することができます。
(クエリウィンドウで実行します)

bcp に話を戻すと、データーベース階層下のテーブル全てを、一括で処理する(データをエクスポートしてファイルにする)には、
コマンドラインスクリプトを書かなければなりません。少し手がかかるので、以下に簡単なプログラムを用意しました。

まず、テーブルの一覧を取得しなければなりません。エクスポートする元のSQLサーバーの、
SQL Server Management Studio にて、新しいクエリを作成し、
select * from sys.objects where type = 'U'
を実行してください。テーブルが列挙されますので、その名前の部分をコピーしてください。
システムテーブルなどが含まれていないかチェックし、含まれていたら削除してください。

そのテーブル名の一覧(改行区切り)を、以下に貼り付けてください。



残りの、必要な情報を記入して、作成ボタンを押してください。
最初から記入されている文字列は例ですので、変更する必要があります。
サーバー名
データーベース名
アカウント名
パスワード
ファイルを保存する場所
パスワードについては、仮のユニークな文字列を入力し、あとでメモ帳などで置換してください。



作成されたコマンドは、bat ファイルにして実行するか、コマンドプロンプトにそのまま貼り付けて実行してください。
コマンドプロンプトは、管理者で起動すると確実です。
テーブルの内容を一度クリアする場合は、「テーブル内容削除用」を使用してください。

追記:CSV形式ですと、デリミタ設定の不具合によって、正しくインポートできないことがありましたので、
SQL SERVER ネイティブ形式(エクスポート用2、インポート用2)でもコマンドが出力されるようになっています。
これも、調べれば CSV のままで、データの当該部分をエスケープするようなコマンドがあるのかもしれません。



以上で、説明は終了です。




WINDOWS及びサーバー関連の話題、TIPS & テクニック の一覧に戻る

Information of This Page
SQL SERVER における、bcpのエクスポート・インポートを利用したデーターベースのバックアップとリストアの方法について pubdate:


© 2024
Author : FloatGarden