【SQL Server】BULK INSERT でCSVファイルから登録する

SQL Server BULK INSERT CSVファイルから登録する

SQL Serverには「BULK INSERT」を使って、CSVファイルからデータを登録することができます。ここでは「BULK INSERT」について解説します!

BULK INSERTの構文

--CSVファイルからINSERTする
BULK INSERT {テーブル名} 
 FROM {ファイルパス}  WITH ({オプション});

{ファイルパス}のデータを{テーブル}へINSERTします。

代表的なオプションをいくつか紹介します。

DATAFILETYPE

ファイルの型を指定します。

  • cha・・・文字形式
  • widechar・・・Unicode文字
  • native・・・ネイティブ (データベース) データ型
  • widenative・・・ネイティブ (データベース) データ型、Unicode文字

FIELDTERMINATOR

フィールドの区切り文字(ターミネータ)を指定します。

  • \t・・・タブ(デフォルト)
  • 任意の文字

その他のターミネーターについてはこちらを参照してください。

参照:フィールド ターミネータと行ターミネータの指定 (SQL Server) 

 

例1. BULK INSERTでCSVファイルを登録(カンマ区切り指定)

--CSVファイルからINSERTする
BULK INSERT emp 
 FROM 'D:\file\import_data.csv'  
 WITH (FIRSTROW = 2, FIELDTERMINATOR = ',');

● CSVファイル=D:\file\import_data.csv の中身

empno,empname,insno
A001,satou,1
A002,tanaka,1
A003,katou,1
A004,aoki,1
A005,satou,1

CSVファイルはカンマ区切りで1行目にヘッダーがあります。

● BULK INSERT後のempテーブル

empno empname insno
A001 satou 1
A002 tanaka 1
A003 katou 1
A004 aoki 1
A005 satou 1

ここではBULK INSERTを使って上記のCSVファイルをempテーブルへ登録しました。

BULK INSERTオプションとして2つ指定しました。

「FIRSTROW=2」はCSVファイルのヘッダーを飛ばすために2行目から読み込むよう設定しました。

区切り文字がデフォルトではタブになっています。「FIELDTERMINATOR = ‘,’」でカンマ区切りを指定しました。

これでCSVファイルからBULK INSERTを使って登録することができました。

例2. BULK INSERTでCSVファイルを登録(CSV指定)

--CSVファイルからINSERTする
BULK INSERT emp 
 FROM 'D:\file\import_data.csv'  
 WITH (FIRSTROW = 2, FORMAT = 'CSV');

SQL Server 2017から「FORMAT = ‘CSV’」とすればCSVファイルを取り込めます。2017以降のバージョンであれば、こちらの方が簡単ですね。

参照:BULK INSERT (Transact-SQL)

以上、SQL Serverの「BULK INSERT」を使って、CSVファイルからデータを登録しました。

コメント