BULK INSERTは、csvなどのデータを、テーブルにインポートできるコマンドです。
データのインポートはSQL Server Management Studioのウィザードを使っても利用できます。詳しくはこちらのリンクをご参照ください。
SQL Serverでのデータインポートとエクスポートの実践ガイド - JBS Tech Blog
ですが、BULK INSERTコマンドを使えばストアドの処理に記載して定期的にcsvファイルを自動で取り込むといったことができるの非常に便利なので今回ご紹介させて頂きます。
クエリの用意
下記SQLを参考にしてSQL Server Management Studioから対象のデータベースにSQLを実行します。
BULK INSERT
[データベース名].[スキーマ名].[テーブル名]
FROM
インポートしたいデータファイルのパス
WITH (
FORMAT = 'CSV' --オプション
)
自動でデータベースとテーブルは作成されませんので、事前にデータベースとテーブルは作成してください。
WITH()内のオプションについては下記公式サイトをご参照ください。今回はCSVを取り込むだけなので、最低限の設定になっています。
BULK INSERT (Transact-SQL) - SQL Server | Microsoft Learn
クエリの実行
ご紹介したSQLを参考に今回用にSQLを修正して、データベースに対してBULK INSERTを実行しました。
実行結果に「xx行処理されました」と表示されれば問題なく取り込めています。
今回は1行だけ取り込んでいるので、「1行処理されました」と表示されています。
select文を実行して、CSVファイルが正しく取り込めていることを確認します。
さいごに
今回の移行方法は単純にテーブルに格納されているデータだけをコピーする方法です。アクセス権などはコピーされないので、その点は考慮が必要になります。
他にも色々な方法でデータを移行することができますが、今後改めてご紹介したいと思います。