SQL Server Management Studio - 改行入りのデータを Excel にエクスポートする
SQL Server Management Studio で Excel にエクスポートする
テーブルに入ってるデータや、クエリーを書いて取得したデータなどを Excel にエクスポートしたい時ありますよね。
簡単な方法は、クエリエディターの結果グリッドで、レコードを選択して、右クリックでコピーやヘッダー付きでコピーして Excel ファイルに貼り付けることだと思います。
ただ、この方法だと、値に改行が入っていた時に、SQL Server Management Studio (SSMS) のバージョンや設定によっては、それ以降のカラムと値がずれてしまうことがあります。
例えば、StudentID = 2 の Memo カラムに次のような値を保存します。
1行目
2行目
3行目
そして、SSMS 2014 の結果グリッドからコピーしてエクセルに貼り付けるとこんな感じになります。
SSMS 2016 以降では、結果グリッドからコピーまたは保存時に CR/LF を保持するかどうかが選択できるようになり、デフォルトでは保持しない設定になっている為、改行がスペースに置き換えられ、一行になって貼り付けされます。
もし、SSMS 2016 より前のように、コピーまたは保存時に CR/LF を保持したい場合には、[ツール] > [オプション] > [クエリ結果] > [SQL Server] > [結果をグリッドに表示] で、[コピーまたは保存時に CR/LF を保持] のオプションをオンにしてください。
改行入りのデータを Excel にエクスポートする
改行が保持された状態で、データを Excel にエクスポートしたい時は、SQL Server Management Studio の データのエクスポート 機能を使ってエクスポートすることができます。
オブジェクトエクスプローラから、データベースで右クリックし、[タスク] > [データのエクスポート] を選択します。
ウィザードが始まりますので [次へ] をクリックします。
[データ ソースの選択] 画面で、今回は SQL Server Native Client 11.0 を選択します。
サーバー名、ログイン情報、データベースを入力し、[次へ] をクリックします。
[変換先の選択] 画面で、Microsoft Excel を選択します。
エクスポート先のパスとファイル名、Excel のバージョンを指定し、[次へ] をクリックします。
先ほどのクエリーをそのまま出力したいので、[転送するデータを指定するためのクエリを記述する]を選択し、[次へ] をクリックします。
[基になるクエリの指定] 画面が出てくるので、先ほどのクエリーをペーストし、[次へ] をクリックします。
テーブルの選択やマッピングの画面が出てきますが、今回は何も変更せずに[次へ] をどんどんクリックし、[完了]までクリックします。
データの変換でエラーになってエクスポートできない場合は「SQL Server Management Studio - 改行入りのデータを CSV ファイルにエクスポートする」をお試しください。
エクスポートされた Student.xlsx ファイルを確認してみると、改行が保持されていますね!