1. ホーム
  2. sql-server

ID(オートインクリメント)カラムを使用したBULK INSERT

2023-07-23 18:39:38

質問

CSVファイルからデータベースに一括でデータを追加しようとしています。

Employeeテーブルには、カラム ID (PK)がオートインクリメントされます。

CREATE TABLE [dbo].[Employee](
 [id] [int] IDENTITY(1,1) NOT NULL,
 [Name] [varchar](50) NULL,
 [Address] [varchar](50) NULL
) ON [PRIMARY]

私はこのクエリを使っています。

BULK INSERT Employee  FROM 'path\tempFile.csv ' 
WITH (FIRSTROW = 2,KEEPIDENTITY,FIELDTERMINATOR = ',' , ROWTERMINATOR = '\n');

.CSVファイル

Name,Address
name1,addr test 1
name2,addr test 2

のように記述しますが、このようなエラーメッセージが表示されます。

2行目、1列目(id)の一括読み込みデータ変換エラー(型の不一致または指定されたコードページに対して無効な文字)です。

どのように解決するのですか?

に一括挿入しない。 本当の テーブルへ直接BULK INSERTしないでください。

私ならいつも

  1. に挿入します。 ステージング テーブル dbo.Employee_Staging (ただし IDENTITY カラムを除く) を CSV ファイルから取得します。
  2. インポートしたデータを編集、クリーンアップ、操作できる可能性があります。
  3. のような T-SQL ステートメントを使用して、実際のテーブルにデータをコピーします。

    INSERT INTO dbo.Employee(Name, Address) 
       SELECT Name, Address
       FROM dbo.Employee_Staging