批量加载:数据文件中遇到意外的文件结尾

And*_*rey 0 sql database sql-server-2008-express sql-server-2008 loaddata

我正在使用SQL Server Express 2008

当我尝试将数据从txt文件加载到此表中时

create table Clients
(
ClientID int not null IDENTITY (9000,1),
LastName varchar (30)not null,
FirsName varchar (30)not null,
MidInitial varchar (3),
DOB date not null,
Adress varchar (40) not null,
Adress2 varchar (10),
City varchar (40) not null,
Zip int not null,
Phone varchar (30) ,
CategCode varchar (2) not null,
StatusID int  not null,
Hispanic BINARY default 0,
EthnCode varchar(3) ,
LangID int,
ClientProxy varchar (200),
Parent varchar (40),
HshldSize int default 1,
AnnualHshldIncome INT,
MonthlyYearly VARCHAR(7) ,
PFDs INT,
WIC BINARY default 0,
Medicaid BINARY default 0,
ATAP BINARY default 0,
FoodStamps BINARY default 0,
AgencyID int not null,
RoutID int  ,
DeliveryNotes varchar (200),
RecertificationDate date not null,
Notes text,
Primary Key (ClientID)
);
Run Code Online (Sandbox Code Playgroud)

我用

SET IDENTITY_INSERT Clients2 ON;
BULK INSERT Clients2
FROM 'c:\Sample_Clients.txt'  
WITH
(
   FIELDTERMINATOR = ',', 
   ROWTERMINATOR = '\r\n'  
)
Run Code Online (Sandbox Code Playgroud)

SQL Server Express让我错误

消息545,级别16,状态1,行2当IDENTITY_INSERT设置为ON或复制用户插入NOT FOR REPLICATION标识列时,必须为表'客户端'中的标识列指定显式值.

文件只有一行(现在只是样本数据)我检查它的一行多次

数据看起来像这样

13144,Vasya,Pupkin,,1944-10-20,P.O. Box 52,,Wrna,99909,(907) 111-1111,SR,4,0,W,1,,,3,1198,month,0,0,1,0,1,45,,,2011-04-27
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决这个问题?

Jef*_*ver 9

您需要在批量插入语句中使用参数KEEPIDENTITY.这是在负载中保留标识值所必需的.

BULK INSERT Clients2 FROM 'c:\Sample_Clients.txt'
    WITH ( KEEPIDENTITY, FIELDTERMINATOR = ',', ROWTERMINATOR = '\r\n'
)
Run Code Online (Sandbox Code Playgroud)

我还认为你会遇到问题,因为你没有Notes列的数据或占位符.添加到文件末尾的逗号应解决此问题.