Sql server 2012 SQL Server 2012-大容量插入第一行=2跳过第二行

Sql server 2012 SQL Server 2012-大容量插入第一行=2跳过第二行,sql-server-2012,bulkinsert,Sql Server 2012,Bulkinsert,我需要跳过文本文件中的第一行和最后一行。要做到这一点,我首先批量插入文件,而不解析字段,并计算它在暂存表中的行数。然后,我使用此动态sql代码将文件插入到我的表中: SELECT @last_row = MAX(id) FROM Pre_Staging_Table SELECT @last_row = CAST(@last_row AS BIGINT) - 1 SELECT @bulk_insert = ' BULK INSERT Staging_Table FROM ''' + @file

我需要跳过文本文件中的第一行和最后一行。要做到这一点,我首先批量插入文件,而不解析字段,并计算它在暂存表中的行数。然后,我使用此动态sql代码将文件插入到我的表中:

SELECT @last_row = MAX(id)
FROM Pre_Staging_Table

SELECT @last_row = CAST(@last_row AS BIGINT) - 1

SELECT @bulk_insert =
'
BULK INSERT Staging_Table
FROM ''' + @filename + '''
WITH
(
FIRSTROW = 2
, LASTROW = ' + @last_row + '
, FIELDTERMINATOR = ''' + @field_terminator + '''
, ROWTERMINATOR = ''' + CHAR(10) + '''
)
'
EXEC(@bulk_insert)
问题是。。。它使用文件的第三行开始最后的批量插入!这到底是为什么?当我对预暂存表执行大容量插入时,所有行都会被插入。我不做任何FIRSTROW或LASTROW过滤器

以下是我的数据文件的前4行:

09.0|A|DATA|START|20140626|20140626|005221|A|
346| |001|33  |P|FLIP       |2014|00000|00|L|O|0|       |0000000015|0| |     |SNAP       |19|000350000|00100|    |        |      |    | | |          |      |                                                                                          |4|000|     |  |AA   |2014|01|01|       |#
346| |001|33  | |FLIP       |2014|00000|00|L|O|0|       |0000000150|0| |     |SNAP       |00|000000000|00100|    |        |      |    | | |          |      |                                                                                          |4|000|     |  |AA   |2014|01|01|       |#
346| |001|33  |P|FLIP       |2014|00000|00|L|O|0|       |0000000027|0| |     |SNAP       |22|000125000|00100|    |        |      |    | | |          |      |                                                                                          |4|000|     |  |AA   |2014|01|01|       |#
这些行以LF结尾,而不是CRLF。所以我想知道我的代码是否有问题。我读取了另一个线程,但这并没有解决问题,因为我的标题行似乎至少包含一个分隔符,正如在其他行中找到的那样


更新:我通过将预暂存表中的数据导出到一个新的文本文件中,其中只包含我想要的行,然后重新导入它们来解决这个问题。

OP,请查看此问题的公认答案,我认为这可能解决了您的问题:注意:目前还不清楚这是否是重复的…请向我们显示您文件的前4或5行,可能是标题和/或数据格式有问题。我已用数据更新了原始帖子。链接到的线程很有用,但我认为它不适用,因为我的所有行都至少包含一个垂直条分隔符。