2013-02-11 38 views
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 

我所有的列都搞砸理想管材名部分應該有莫扎特豪利特。它有416-,然後工作電話擴展應該爲空,但它已經得到價值91234和residential_postal_or_zip_code是空的這是錯誤的。

字段映射在這裏是錯誤的。我該怎麼做才能糾正它?

回答

0

所以你的問題是你有一個逗號作爲你的第一個字符,所以SQL將它之前的空白空間視爲一個列值並將其插入到CustID中,因此所有內容都右移一位。因此,無論在CustID之前在測試表中創建一個虛擬列,還是刪除行中的第一個逗號。

+0

我無法對文本文件進行更改 – 2013-02-11 02:27:46

0

遺憾地說,但你必須編輯你的文本文件。這是創建一個語法錯誤,所以必須修改。我可以建議你,你可以刪除和添加新的文本文件,具有相同的名稱和相同的位置。

看到你的語法,看起來你給了你的第一列「自動增加」。所以,您不必爲CustID提供值,也不需要在csv文件中保留起始逗號。

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

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

希望它能幫助!