こんにちは。たいら(@tairaengineer2)です。
この記事では、SQL Serverで特定のテーブルからスキーマとデータ付きでInsert文をエクスポートするやり方について解説します。
スポンサーリンク
前提条件
この記事では、Microsoft SQL Server2017を使っています。
インストールの仕方は、下の記事をご参考ください。
エクスポートするテーブル
この記事でエクスポートするテーブルの構造は以下の通りです。
【Sample】というデータベースの【dbo.Person】というテーブルです。
【dbo.Person】の中は
- id
- name
- age
- job
という項目があります。
テーブルには
という、4つのレコードが入っています。
このテーブルをスキーマとデータ付きでエクスポートします。
スキーマとデータ付きでInsert文をエクスポートする
エクスポートするテーブルのデータベースを選択します。
この状態で右クリックします。
- タスク
- スクリプトの生成
の順番でクリックします。
【スクリプトの生成とパブリッシュ】という画面がポップアップします。
【次へ】を押します。
スクリプトを生成するデータベースを選択する画面になります。
ここで
【特定のデータベースオブジェクトを選択】のラジオボタンを選択します。
テーブルの左にあるプラスのアイコンをクリックします。
選択したデータベースにあるテーブルが表示されます。
【dbo.Person】というテーブルをエクスポートしたいので
チェックを入れて、【次へ】を押します。
【スクリプトの保存方法またはパブリッシュ方法を指定してください】という画面に移動します。
ここでファイル名をどこかに記録しておきましょう。
理由は後ほど書きます。
【詳細設定】を押します。
【スクリプトの作成の詳細オプション】を設定できます。
ここで1か所変更する場所があります。
スクロールを移動させて、
【スクリプトを作成するデータの種類】を選択します。
【スキーマのみ】の右横にある三角ボタンを押します。
- スキーマとデータ
- スキーマのみ
- データのみ
のドロップダウンリストが表示されます。
この中の
【スキーマとデータ】を選択します。
【スクリプトを作成するデータの種類】が【スキーマとデータ】を選択していることを確認して、【OK】ボタンを押します。
この状態で【次へ】ボタンを押します。
選択内容を確認する画面になります。
プラスのアイコンを押して、内容を確認します。
テーブルは合っているか、や
変更したオプションはスキーマとデータになっているかを確認します。
確認できたら
【次へ】ボタンを押します。
スクリプトを作成中になります。
できました!
【完了】ボタンを押します。
では、エクスポートしたSQLを見てみましょう。
格納されている場所は、先ほど記録したファイル名の場所にSQLがエクスポートされています。
中身を見てみます。
ちゃんとスキーマとデータのInsert文をエクスポートできました!
エクスポートしたInsert文を実行してみる
本当にできるかどうか実際にやってみましょう。
【Test】というデータベースを作ります。
データベースの作り方は以下の記事をご参考ください。
【Test】のテーブルに、【dbo.Person】が無いことを確認します。。
【dbo.Person】がないですね。
【Test】を選択した状態で
右クリックをします。
【新しいクエリ】を選択します。
【オブジェクトエクスプローラー】の横に、クエリを実行できるスペースができます。
この中に先ほどエクスポートしたInsert文をコピー&ペーストします。
では、実行しましょう!・・・と言いたいところですが。
この状態で赤枠の【実行】ボタンを押すと、エラーになります。
試しに実行してみましょう。
メッセージ 2714、レベル 16、状態 6、行 8
データベースに 'Person' という名前のオブジェクトが既に存在します。
メッセージ 2627、レベル 14、状態 1、行 19
制約 'PK_Person' の PRIMARY KEY 違反。オブジェクト 'dbo.Person' には重複するキーを挿入できません。重複するキーの値は (a001) です。
ステートメントは終了されました。
メッセージ 2627、レベル 14、状態 1、行 20
制約 'PK_Person' の PRIMARY KEY 違反。オブジェクト 'dbo.Person' には重複するキーを挿入できません。重複するキーの値は (a002) です。
ステートメントは終了されました。
メッセージ 2627、レベル 14、状態 1、行 21
制約 'PK_Person' の PRIMARY KEY 違反。オブジェクト 'dbo.Person' には重複するキーを挿入できません。重複するキーの値は (a003) です。
ステートメントは終了されました。
メッセージ 2627、レベル 14、状態 1、行 22
制約 'PK_Person' の PRIMARY KEY 違反。オブジェクト 'dbo.Person' には重複するキーを挿入できません。重複するキーの値は (a004) です。
ステートメントは終了されました。
原因は、ここです。
最初のUSEはデータベースを設定しています。
Sampleを指定しているので、すでに【dbo.Person】というテーブルがあるのでエラーが出ました。
データベースは【Test】を変更します。
実行します。
ちゃんと処理されました!
本当に正常に処理されているか確認してみます。
データベース【Test】のテーブルを見てみます。
【dbo.Person】というテーブルがあります。
中身を見てみましょう。
データも【Sample】の【dbo.Person】と同じですね!
無事スキーマとデータをエクスポート出来たことが確認できました。
スポンサーリンク
まとめ:SQL Serverからエクスポートしてみよう!
以上が特定のテーブルのスキーマとデータをInsert文でエクスポートする方法です。
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
他にもSQL Serverについて記事を書いています。
良ければこちらもご参考ください。
【SQL Server】SELECTで出した結果をcsvに出力する方法を解説します
【SQL Server】Transact-SQLとは?解説します
今までブログで書いたSQL Serverの解説記事のまとめは、こちらをご参考ください。