使用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. (编辑:南京站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
热点阅读