LoginSignup
0
1

More than 3 years have passed since last update.

[SQL Server] Bulk Insertでデータインポート(フォーマットファイルなし)

Posted at

はじめに

運用まわりで定期的に大量レコードをデータインポートしたい場合に使っているが
何気に忘れがちなので備忘録

やりたいこと

  • 大量レコードをデータインポート

前提条件

  • テーブルの定義通りのデータをインポートする
  • 任意のカラムのデータだけを入れたい等の場合は、ちょっと工夫が必要なのでまた後日まとめる

用意するもの

  • インポートしたいデータを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: 並べ替えのカラムを指定
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1