批量插入字段映射不正确
问题描述:
我正在尝试执行批量插入。批量插入字段映射不正确
这里是我的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之前在测试表中创建一个虚拟列,还是删除行中的第一个逗号。
答
遗憾地说,但你必须编辑你的文本文件。这是创建一个语法错误,所以必须修改。我可以建议你,你可以删除和添加新的文本文件,具有相同的名称和相同的位置。
看到你的语法,看起来你给了你的第一列“自动增加”。所以,您不必为CustID提供值,也不需要在csv文件中保留起始逗号。
Sql将自己取得CustId值。提供以下csv文件的语法
91234,,,,WOLFIE HOWLETT,416-,Toronto,,,,,Toronto,CA_ON,CA_ON
希望它能帮助!
我无法对文本文件进行更改 – 2013-02-11 02:27:46