【SQL Server】SSMSでCSVをエクスポートする

SQL Server

SSMS(SQL Server Management Studio)でSQL ServerのデータをCSV形式でエクスポートしようとしたら意外と難儀したのでメモ。

ちなみ環境は下記です。
DBサーバ:Azure SQLデータベース
クライアントOS:Windows 10
SSMSバージョン:18.4

SSMSでCSVエクスポート

SSMSでDBサーバに接続後、データベースを右クリック→「タスク」→「データのエクスポート」を選択します。

ウイザード画面が開くので「Next」をクリックします。

このウィザードが少し分かりづらくて、インポートおよびエクスポートどちらにも対応しています。ウィザードの流れとしては ① コピー元ソースを選択 → ② コピー先ソースを選択 → ③ 実行 ですが、この①コピー元ソース②コピー先ソースをどう設定するかによってインポートまたはエクスポートが実行されます。例えば①コピー元ソースがデータベース/②コピー先ソースがcsvファイルの場合はエクスポート、その逆であればインポートになります。

ということで、コピー元ソースはデータベースを指定します。データソースに「SQL Server Native Client」を選択し、認証情報を入力します(認証情報はSSMSにログインする時の情報と同じ)。また抽出元となるデータベースも選択します。

「Next」をクリックして、続いてコピー先の指定です。ここでは「Flat File Destination」を選択します。ファイル名には出力先のCSVファイル名(フルパス)を設定します。ちなみにCドライブ直下を出力先に指定するとエクスポート出来ないという事象がありましたので、避けたほうが良いかもしれません(私の環境だけかもしれませんが・・・)。

「Next」をクリックすると、下記のような画面が表示されます。

テーブルの中身を丸々エクスポートしたい場合は「1つ以上のテーブルまたはビューからデータをコピーする」を選択します。条件による絞り込みやテーブル間の結合をした結果をエクスポートしたい場合は「転送するデータを指定するためのクエリを記述する」を選択します。

以降は「1つ以上のテーブルまたはビューからデータをコピーする」を選択した場合の例になります。

「Next」をクリックするとデータ抽出するテーブルを選択できます。

「Next」をクリックします。

すぐに実行する」にチェックが入った状態で「Next」をクリックします。

「Finish」をクリックでエクスポートが実行されます。

指定した出力先にcsvファイルが吐き出されます。

文字コード絡みのエラーとなる場合

実行結果にエラーがあると下記のような画面になります。

エラーの詳細を見れるのですが、その内容が文字コード絡みの場合。コピー先を指定する時に「Unicode」をチェックすると解決する可能性ありです。

コメント

タイトルとURLをコピーしました