2017-08-15 35 views
0

我使用的是批量插入腳本導入了一些平面文件到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

回答

0

我能想到的唯一的辦法是先批量整個文件插入到一個單列表(如varchar(max))。比你可以識別最後一行,並在你的實際bulk insert中使用該值。

這不是一個非常直接的方法,但我不認爲有另一種方法(除非您在C#或java或其他方面編寫自定義解決方案)。也許您可以使用SQLCMD首先讀取文件中的行數,但我不知道如何。

請注意有一個connect項目,微軟已關閉。在那個頁面上,微軟建議使用openrowset解決方案,可能值得嘗試,但我懷疑它會適用於您的情況。