批量插入不会在不给出任何错误的情况下插入日志文件中的所有行

时间:2015-01-09 06:50:35

标签: sql sql-server tsql

我正在使用以下代码

create TABLE #temp1(                                          
 [date] [varchar](500) NULL,
 [time] [varchar](500) NULL,
 [s-ip] [varchar](500) NULL,
 [cs-method] [varchar](500) NULL,
 [cs-uri-stem] [varchar](max) NULL,
 [cs-uri-query] [varchar](max) NULL,
 [s-port] [varchar](500) NULL,
 [cs-username] [varchar](500) NULL,
 [c-ip] [varchar](500) NULL,
 [cs(User-Agent)] [varchar](2048) NULL,
 [cs(Referer)] [varchar](max) NULL,
 [sc-status] [varchar](max) NULL,
 [sc-substatus] [varchar](500) NULL,
 [sc-win32-status] [varchar](500) NULL,
 [time-taken] [varchar](500) NULL
 )

BULK INSERT #temp1 FROM 'C:\iislogs\u_ex150108.log'
  WITH (
           FIRSTROW  = 5,

          FIELDTERMINATOR = ' ',
           ROWTERMINATOR = '\n',
           MAXERRORS = 10000
        )

和我正在使用的文件有1521000行,但我在#temp1只获得了1305226

请帮忙 提前致谢

3 个答案:

答案 0 :(得分:1)

感谢所有人的宝贵回答

但是经过长时间的谷歌搜索后再次出现。

我找到了一个解决方案,这是一个Microsoft sql server bug

只有在我们的系统中安装最新的sql server服务包时才能解决这个bug

当我在我的系统中安装Service Pack时,批量插入效果很好。

如需任何进一步的帮助,请从以下链接获取帮助

https://support.microsoft.com/kb/837401/EN-US

再次感谢

答案 1 :(得分:0)

将所有varchar设置为max并再次执行批量文件,请将您的日志文件粘贴到excel并查看总行是否真的是1521000?

问题通常由无效的fieldterminator和rowterminator引起。

答案 2 :(得分:0)

最近我在插入带有批量插入的行时出现问题,我添加了一个rowcount条件,直到存储过程必须运行。

select @tablerowcount = count(*) from tbl1
while @tablerowcount = 0
begin
  exec sp_custombulkinsert
end