我想将文件数据批量插入带有主键id列的表中,但是我收到了这个错误。
CREATE TABLE [dbo].[WorkDataLoad]
(
[Id] [int] IDENTITY(1,1) NOT NULL,
[RecordLine] [nvarchar](max) NULL,
CONSTRAINT [PK_WorkDataLoad] PRIMARY KEY CLUSTERED ([Id] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
查询:
truncate table WorkDataLoad
BULK INSERT WorkDataLoad
FROM 'D:\NPfiles\TS082114.trn'
WITH (
TABLOCK,
KEEPIDENTITY
)
错误
Msg 4832,Level 16,State 1,Line 4
批量加载:数据文件中遇到意外的文件结尾。Msg 7399,Level 16,State 1,Line 4
链接服务器“(null)”的OLE DB提供程序“BULK”报告错误。提供商未提供有关错误的任何信息。Msg 7330,Level 16,State 2,Line 4
的行
无法从OLE DB提供程序“BULK”获取链接服务器“(null)”。
答案 0 :(得分:3)
保持你的桌子不变并创建这个VIEW(选择除ID(主键)列之外的所有内容)
CREATE VIEW [dbo].[VWWorkDataLoad]
AS
SELECT RecordLine
FROM [dbo].[WorkDataLoad];
现在 BULK INSERT 应如下所示:
BULK INSERT [dbo].[VWWorkDataLoad] FROM 'D:\NPfiles\TS082114.trn'
WITH (FIRSTROW = 2,FIELDTERMINATOR = ',' , ROWTERMINATOR = '\n');
运行此语句后,您可以检查表中是否应该包含主键记录。希望这有帮助,它对我有用。