批量插入CSV文件的问题

时间:2017-08-24 07:07:44

标签: sql-server csv bulkinsert

我正在尝试从CSV文件加载SQL Server表。

我的批量插入声明:

bulk insert ClassList from 'ClassList.csv'
with (
     firstrow=2,
     fieldterminator=',',
     maxerrors=100,
     keepnulls
     );

大多数数据加载但不是少数行,其中一个字段包含逗号,因此它们具有双引号分隔符 - 此处为行21和21。 23加载但不是22:

21,Blue or Lilac Smoke Adult,22,PER,
22,"Red, Tortie, Cream, Blue or Lilac Cream or Choc. Tortie Smoke Adult",23,PER,
23,AC Silver Tabby Adult,24,PER,

我的表:

Class_Number varchar(10) not null
Class_Description varchar(200) not null
Class_Order int not null
Section_ID varchar(10) not null
Judge_Initials varchar(10) null

使用SSMS v17.2。

SQL Server详细信息:

Product Version:          13.0.4206.0
Product Name:             SQL Server 2016
Product Level:            SP1 
Product Edition:          Express Edition (64-bit)

2 个答案:

答案 0 :(得分:0)

确定答案,如上面发布的链接一样,我的软件版本中的BULK LOAD无法处理在某些字段周围有引号的文件。我没有试过看引用所有字符字段是否有效。我重新保存为制表符分隔字段(.txt),它已经加载了很好。

来自MS文档:

https://docs.microsoft.com/en-us/sql/t-sql/statements/bulk-insert-transact-sql

**Input file format options**
FORMAT = 'CSV'
Applies to: SQL Server 2017 CTP 1.1.
Specifies a comma separated values file compliant to the RFC 4180 standard.

FIELDQUOTE = 'field_quote'
Applies to: SQL Server 2017 CTP 1.1.
Specifies a character that will be used as the quote character in the CSV
file. If not specified, the quote character (") will be used as the quote
character as defined in the RFC 4180 standard.

FORMAT选项不可接受,这可能是我问题的根源。

答案 1 :(得分:-2)

好像你有','作为源csv文件的数据。类似的问题在以下链接中得到解答 -

sql server Bulk insert csv with data having comma