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

Bulk insert does not insert all the rows from the log file without giving any error

我正在使用以下代码

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

请帮忙 提前致谢

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

该问题通常是由无效的字段终止符和行终止符引起的。

感谢大家宝贵的回答

但在 Google 中长时间搜索后再次出现。

我找到了一个解决方案,这是一个 Microsoft sql 服务器错误

只有在我们的系统中安装 sql 服务器的最新服务包才能解决此错误

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

如需进一步帮助,请从下方获取帮助link

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

再次感谢

最近我在使用批量插入插入行时遇到问题,我添加了一个行计数条件,直到存储过程必须 运行。

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