SQL Server大容量插入则会忽略或跳过最后一行

问题描述:

我使用的是批量插入脚本导入了一些平面文件到SQL ServerSQL Server大容量插入则会忽略或跳过最后一行

几个文件与

----------------------------------- 

结束时,我想那么什么要做的是或跳过最后一行或删除批量插入中的------------------。其中一个选项可能吗?

SET @s = N'BULK INSERT ' + @t + ' 
      FROM ''' + @f + ''' 
      WITH (FIELDTERMINATOR = ''|'', 
       ROWTERMINATOR = ''0x0a'', 
       FIRSTROW=2) ' 

lastrow = 1不起作用

+0

'lastrow = 1'将不起作用,因为那么bulkinsert将在第1行之后停止。您首先必须识别文件中的最后一行,并使用'lastrow = [错误的行编号-1]' – HoneyBadger

+0

如果每个文件的格式不同,如何识别拉斯特罗? – MBurger

+0

进行批量插入,然后用'----'删除该行。 – Ben

我能想到的唯一的办法是先批量整个文件插入到一个单列表(如varchar(max))。比你可以识别最后一行,并在你的实际bulk insert中使用该值。

这不是一个非常直接的方法,但我不认为有另一种方法(除非您在C#或java或其他方面编写自定义解决方案)。也许您可以使用SQLCMD首先读取文件中的行数,但我不知道如何。

请注意有一个connect项目,微软已关闭。在那个页面上,微软建议使用openrowset解决方案,可能值得尝试,但我怀疑它会适用于您的情况。