加入收藏 | 设为首页 | 会员中心 | 我要投稿 南京站长网 (https://www.025zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

使用FIRSTROW参数的SQL批量插入会跳过以下行

发布时间:2021-03-31 11:04:36 所属栏目:MsSql教程 来源:网络整理
导读:我似乎无法弄清楚这是怎么回事. 以下是我尝试批量插入SQL Server 2005的文件示例: ***A NICE HEADER HERE***0000001234|SSNV|00013893-03JUN090000005678|ABCD|00013893-03JUN090000009112|0000|00013893-03JUN090000009112|0000|00013893-03JUN09 这是我

我似乎无法弄清楚这是怎么回事.

以下是我尝试批量插入SQL Server 2005的文件示例:

***A NICE HEADER HERE***
0000001234|SSNV|00013893-03JUN09
0000005678|ABCD|00013893-03JUN09
0000009112|0000|00013893-03JUN09
0000009112|0000|00013893-03JUN09

这是我的批量插入声明:

BULK INSERT sometable
FROM 'E:filefromabove.txt
WITH
(
FIRSTROW = 2,FIELDTERMINATOR= '|',ROWTERMINATOR = 'n'
)

但是,出于某种原因,我能得到的唯一输出是:

0000005678|ABCD|00013893-03JUN09
0000009112|0000|00013893-03JUN09
0000009112|0000|00013893-03JUN09

除非我完全删除标题并且不使用FIRSTROW参数,否则总是会跳过第一条记录.这怎么可能?

提前致谢!

解决方法

我不认为您可以使用BULK INSERT / BCP以不同的格式跳过行.

当我运行这个:

TRUNCATE TABLE so1029384

BULK INSERT so1029384
FROM 'C:Datatestso1029384.txt'
WITH
(
--FIRSTROW = 2,ROWTERMINATOR = 'n'
)

SELECT * FROM so1029384

我明白了:

col1                                               col2                                               col3
-------------------------------------------------- -------------------------------------------------- --------------------------------------------------
***A NICE HEADER HERE***
0000001234               SSNV                                               00013893-03JUN09
0000005678                                         ABCD                                               00013893-03JUN09
0000009112                                         0000                                               00013893-03JUN09
0000009112                                         0000                                               00013893-03JUN09

看起来它需要’|’甚至在标题数据中,因为它读取到第一列 – 将换行符吞入第一列.显然,如果你包含一个字段终止符参数,它期望每一行必须有一个.

您可以使用预处理步骤剥离行.另一种可能性是只选择完整的行,然后处理它们(排除标题).或者使用可以处理此问题的工具,例如SSIS.

(编辑:南京站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读