【问题标题】:How to import flat file by skipping header and footer using Sql Server query如何通过使用 Sql Server 查询跳过页眉和页脚来导入平面文件
【发布时间】:2016-03-09 01:09:45
【问题描述】:

我想使用 SQL Server 查询导入平面文件。平面文件是用 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,但导入后我在表中只得到 2649 行。

【问题讨论】:

    标签: sql-server csv flat-file


    【解决方案1】:

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

    或者先将数据加载到临时表中 - 单列,然后在 SQL Server 中将其拆分为 WHERE LEFT(input_line, 1) not in ('H', 'T') 中的 H 和 T

    【讨论】:

    • 如何在不加载平面文件的情况下计算最后一行的编号。
    • 我尝试过批量插入,但在导入平面文件时丢失了一个数据行。
    • 在您的 BULK INSERT 语句(请发布)上,如果您使用 FIRSTROW = 2,那么您确实会错过我认为您想要的第一行。
    • 我使用 FIRSTROW=2 和 LASTROW=2651,我的平面文件中的数据行数为 2650,但导入后我在表中只得到 2649 行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 2018-08-25
    • 2019-01-18
    • 1970-01-01
    • 2016-10-07
    • 2010-11-14
    • 1970-01-01
    相关资源
    最近更新 更多