如何使用 Sql 服务器查询跳过页眉和页脚来导入平面文件

How to import flat file by skipping header and footer using Sql Server query

我想使用 SQL 服务器查询导入平面文件。平面文件是用 PIPE 分隔的,包含一个 HEADER 行和一个 FOOTER 行。

平面文件示例如下,

H|201501204|01
1|abc|123
2|efg|456
4|hij|789
T|03

在上面的文件H和T中分别定义了HEADER和FOOTER,'201501204'将是日期,'01'将是平面文件编号,“03”将是平面文件中数据行的计数。

我试过使用批量插入,但在导入平面文件时丢失了一个数据行。 我使用的是 FIRSTROW=2 和 LASTROW=2651,我的平面文件中的数据行数是 2650,但导入后我在 table.

中只得到 2649 行

使用 BULK INSERT 语句(参见 https://msdn.microsoft.com/en-us/library/ms188365.aspx),您需要的选项是 FIRSTROW 并将其设置为 2(文件中的第 2 行)。您也可以使用 LASTROW。

或者先将数据加载到暂存 table - 单列,然后将其拆分到 SQL 服务器中,并通过 WHERE LEFT( input_line, 1 ) 排除 H 和 T不在 ( 'H', 'T' )