1

我正在尝试进行批量插入。

这是我的 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

我所有的专栏都搞砸了。名字部分应该有 Wolfie Howlett。它有 416- 然后工作电话分机应该为空,但它的值是 91234 并且住宅邮政或邮政编码为空,这是错误的。

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

4

2 回答 2

0

所以你的问题是你有一个逗号作为你的第一个字符,所以 SQL 将它前面的空格作为列值并将其插入到 CustID 中,所以一切都右移一个。因此,要么在 CustID 之前的测试表中创建一个虚拟列,要么删除行中的第一个逗号。

于 2013-02-11T01:44:18.610 回答
0

很抱歉,但您必须编辑您的文本文件。它正在创建语法错误,因此必须进行修改。我可以建议您删除和添加具有相同名称和相同位置的新文本文件的方法。

看到您的语法,您似乎已经为您的第一列提供了“自动增量”。因此,您无需为 CustID 提供值,也无需将起始逗号保留在 csv 文件中。

Sql 将自行获取 CustId 值。为 csv 文件提供以下语法

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

希望它会有所帮助!

于 2013-02-11T04:18:51.873 回答