我正在尝试批量插入。
这是我的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-然后工作电话扩展应为null但它的值为91234,而residential_postal_or_zip_code为null,这是错误的。
这里的字段映射是错误的。我该怎么做才能纠正它?
答案 0 :(得分:0)
所以你的问题是你有一个逗号作为你的第一个字符,所以SQL将它之前的空格作为列值处理并将其插入到CustID中,所以所有内容都右移一个。因此,要么在CustID之前在测试表中创建一个虚拟列,要么删除行中的第一个逗号。
答案 1 :(得分:0)
看到你的语法,似乎你已经给你的第一列“自动增量”了。因此,您无需为CustID提供值,也无需在csv文件中保留该逗号。
Sql将自己获取CustId值。为csv文件提供以下语法
91234,,,,WOLFIE HOWLETT,416-,Toronto,,,,,Toronto,CA_ON,CA_ON
希望它会有所帮助!