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
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以降のバージョンであれば、こちらの方が簡単ですね。
以上、SQL Serverの「BULK INSERT」を使って、CSVファイルからデータを登録しました。
コメント