【问题标题】:Bulk load: An unexpected end of file was encountered in the data file批量加载:在数据文件中遇到了意外的文件结尾
【发布时间】:2013-02-03 10:40:03
【问题描述】:

我使用的是 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)
);

我用

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

SQL Server Express 出现错误

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

文件只有一行(现在只是示例数据)我检查了很多次它的一行

数据看起来像这样

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

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

【问题讨论】:

标签: sql database sql-server-2008 sql-server-2008-express loaddata


【解决方案1】:

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

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

我还认为您会遇到问题,因为您没有 Notes 列的数据或占位符。添加到文件末尾的逗号应该可以解决这个问题。

【讨论】:

  • hmm 不起作用(0 行受影响)并且选择表后为空
  • 我在该字段中添加了数据,实际上我在最后添加了一个额外的逗号。现在我也在尝试将数据作为插入表提交,它仍然给我带来错误但不同。
  • 您的数据和表格布局没有对齐;我不确定问题出在哪里。另外,为什么要使用 BINARY 数据类型?我猜这些列应该是 BIT。
  • 我已经将其更改为位并更改文件中的数据,现在看起来像这样 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,
  • 它可以工作,但由于圆顶原因,它只读取文件中的 4 条第一条记录,我有 8000 条记录:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-17
  • 1970-01-01
  • 1970-01-01
  • 2015-03-05
  • 1970-01-01
  • 2013-06-23
  • 1970-01-01
相关资源
最近更新 更多