SQL Server テーブルへCSVファイルをインポートしてみた

はじめに

SQL Server テーブルにCSVファイルのデータを一括インポートした際の備忘録です。

開発環境

OSはWindows 10 Home、データベースはMicrosoft SQL Server 2017 Developer Editionです。

CSVファイル

以下のフォーマットであることを前提とします。

商品名,数量,単価
りんご,1,100
みかん,4,60
ばなな,2,300

フォーマットファイルの作成

SQL Server の接続先インスタンス名を「$server」、対象データベース名を「$database」、対象テーブル名を「$table」、出力するフォーマットファイル名を「$formatfile」とし、Windows 認証で接続する場合は以下のコマンドを実行します。

> bcp dbo.$table format nul `
       -S $server `
       -d $database `
       -f $formatfile `
       -c -t "," -T

BULK INSERTの実行

対象テーブル名を「$table」、フォーマットファイル名を「$formatfile」、インポートするCSVファイルを「$csvfile」とした場合は以下のSQLを実行します。

BULK INSERT [dbo].[$table]
FROM 'C:¥$csvfile'
WITH (
  FIRSTROW=2,
  FORMAT='CSV',
  FORMATFILE = 'C:¥$formatfile',
  CODEPAGE='932'
);

CSVファイルとフォーマットファイルは絶対パスで記載する必要があります。

参照