批量插入字段映射不正确

问题描述:

我正在尝试执行批量插入。批量插入字段映射不正确

这里是我的SQL脚本

GO 
Use test 
DROP TABLE PDTEST 
create table pdtest 
(
CustID INT IDENTITY(1,1), 
work_phone_extension varchar(5), 
residential_postal_or_zip_code varchar(30), 
residential_street_address_line_1 varchar(30), 
residence_phone varchar(17), 
work_phone varchar(17), 
name_part varchar(30), 
mailing_city varchar(20), 
mailing_postal_or_zip_code varchar(30), 
mailing_street_address_line_2 varchar(30), 
mailing_street_address_line_1 varchar(30), 
cell_phone varchar(17), 
residential_city varchar(20), 
residential_country_and_province_or_state varchar(10), 
mailing_country_and_province_or_state varchar(10) 
) 
BULK INSERT pdtest 
FROM 'C:\Python27\Scripts\pd.csv' 
WITH 
(
FIELDTERMINATOR = ',', 
ROWTERMINATOR = '\n', 
KEEPNULLS, 
FIRSTROW = 2 
) 
GO 

这是我的文本文件一行

,91234,,,,WOLFIE HOWLETT,416-,Toronto,,,,,Toronto,CA_ON,CA_ON 

我所有的列都搞砸理想管材名部分应该有莫扎特豪利特。它有416-,然后工作电话扩展应该为空,但它已经得到价值91234和residential_postal_or_zip_code是空的这是错误的。

字段映射在这里是错误的。我该怎么做才能纠正它?

所以你的问题是你有一个逗号作为你的第一个字符,所以SQL将它之前的空白空间视为一个列值并将其插入到CustID中,因此所有内容都右移一位。因此,无论在CustID之前在测试表中创建一个虚拟列,还是删除行中的第一个逗号。

+0

我无法对文本文件进行更改 – 2013-02-11 02:27:46

遗憾地说,但你必须编辑你的文本文件。这是创建一个语法错误,所以必须修改。我可以建议你,你可以删除和添加新的文本文件,具有相同的名称和相同的位置。

看到你的语法,看起来你给了你的第一列“自动增加”。所以,您不必为CustID提供值,也不需要在csv文件中保留起始逗号。

Sql将自己取得CustId值。提供以下csv文件的语法

91234,,,,WOLFIE HOWLETT,416-,Toronto,,,,,Toronto,CA_ON,CA_ON 

希望它能帮助!