はじめに
運用まわりで定期的に大量レコードをデータインポートしたい場合に使っているが
何気に忘れがちなので備忘録
やりたいこと
- 大量レコードをデータインポート
前提条件
- テーブルの定義通りのデータをインポートする
- 任意のカラムのデータだけを入れたい等の場合は、ちょっと工夫が必要なのでまた後日まとめる
用意するもの
- インポートしたいデータをcsvで用意しておく
- この時、区切り文字はカンマ区切りでもタブ区切りでもよい
- 個人的にはタブ区切りを好んで使う --> 住所等にカンマが入っていたりすると厄介なため
- 任意のカラムのデータ等を入れたい場合は、別途フォーマットファイルが必要だけど今回は割愛
構文
Bulk Insert [テーブル名]
From '[データファイルのパス]'
With ([オプション])
サンプル
- ヘッダーをスキップして2レコードめからインポート
- タブ区切り
- 文字コードは
utf-8
- 改行コードはCRCL
サンプルコード
BULK INSERT
tbl_test
FROM
'C:\test\sample.tsv'
WITH (
FIRSTROW = 2,
DATAFILETYPE = 'char',
CODEPAGE = '' 65001 '',
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '0x0A',
ERRORFILE = 'C:\test\error\err.txt'
)
オプション一覧(抜粋)
-
FIRSTROW
: ヘッダなしのデータファイルなら1
-
DATAFILETYPE
: 普通はCHAR
でよし -
CODEPAGE
: 文字コードがshift-jis
の場合は不要 -
FIELDTERMINATOR
: カンマ区切りなら','
-
ERRORFILE
: インサート時にエラーが出た場合、これを指定しておくと出力してくれる -
FORMATFILE
: フォーマットファイルのパス -
MAXROW
: 許容されるエラーレコード数。これを超えると終了する -
ORDER
: 並べ替えのカラムを指定