
今回は、SQLSERVERでテキストファイルからデータを一括で登録する方法を紹介します。
通常、INSERT文では一行ずつしか登録できないので、一括登録する方法を知っていると、
処理速度が上がるメリットなどありますので、是非参考にしてみてください。
それではさっそく使い方を紹介します。
BULK INSERT 使い方
まずは、BULK INSERTの書き方を紹介します。
BULK INSERT テーブル名
FROM 'ファイルパス'
with (設定)
これだけだとわかりにくいので実際の例を見てみましょう。
BULK INSERT personal
FROM 'D:\personal.csv'
WITH (FIELDTERMINATOR =',')
解説
1行目:登録したい対象のテーブル名
2行目:データが格納されているファイルのパス
3行目:データをカンマ区切りで分ける
結果
元ファイル
登録されたデータ
これだけで、一括登録をすることができます。
ただし、注意点がいくつかあるので紹介していきます。
注意点 (エラーが発生してうまく登録できない)
文字コード Shift-JIS
エラーが発生してうまく登録できない場合は、テキストファイルの文字コードをまずは確認しましょう。
日本語が含まれるデータの場合には、基本的に「Shift-JIS」形式にしてやってみてください。
自分が使っているテキストエディタで名前を付けて保存するときに選択できると思います。
メモ帳の場合は、「ANSI」を選択してみてください。
こちらでエラーが解消するかもしれません!
私は、はじめ「UTF-8」になっており、うまくできずかなり詰まりました。。。
文字コード UTF-8
どうしてもUTF-8でやりたい場合は、こちらを試してみてください。
まずは、テキストエディタを利用して、改行コードを「CR+LF」にして保存してください。
そのあと、BULK INSERTで2つ設定を追加しました。
BULK INSERT personal
FROM 'D:\personal.csv'
WITH(
FIELDTERMINATOR =','
,ROWTERMINATOR = '\n'
,CODEPAGE = '65001'
)
実行すると登録することができました。
よく使う設定
最後によく使う設定を載せておきます。
設定 | 説明 |
FIELDTERMINATOR | 区切り文字の設定することができます。tab区切りやカンマ区切りなど設定できます。既定値は「tab」です。 |
ROWTERMINATOR | 1行の終わりを示す文字を指定できます。改行などを指定することが多いです。既定値は「\r\n」 |
CODEPAGE | インポートファイルのコードページを指定することができます。 |
FIRSTROW | 読み込み開始行を指定することができます。ヘッダなどがある場合に指定しましょう。 |
もっと詳細を知りたい場合は、こちらを参考にしてみてください。
まとめ
今回は、一括でインポートすることができる、BULK INSERTについて紹介しました。
知っていると便利な文になるので、是非参考にしてみてください。
基本的に下記の書き方さえ理解していれば使用できると思います。
BULK INSERT personal
FROM 'D:\personal.csv'
WITH (FIELDTERMINATOR =',')
テキストの文字コードに、注意して使用してください。