SQL Server BULK INSERTでデータを取り込む方法

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ファイルが正しく取り込めていることを確認します。

さいごに

今回の移行方法は単純にテーブルに格納されているデータだけをコピーする方法です。アクセス権などはコピーされないので、その点は考慮が必要になります。

他にも色々な方法でデータを移行することができますが、今後改めてご紹介したいと思います。

執筆担当者プロフィール
森 尊臣

森 尊臣(日本ビジネスシステムズ株式会社)

ハイブリッドクラウド本部所属。 SQL ServerやAzureを中心としたシステムの設計・構築に携わっています。

担当記事一覧