SQL Server批量导入超500列分隔文本文件始终显示0行受影响的问题咨询及最优方法求助
SQL Server批量导入超500列分隔文本文件始终显示0行受影响的问题咨询及最优方法求助
各位大佬好,我最近碰到了一个SQL Server批量导入的麻烦问题,想请教下大家的解决思路和最优方案:
我需要把一个包含537个varchar列的ASCII管道分隔(|)文本文件导入SQL Server 2019(版本v15.0.4390.2),但实际只需要其中276列。不管我尝试哪种导入方式,最终结果都是显示**"0 rows affected"**,完全没有数据被导入到目标表中。
我已经做了两次测试,具体情况如下:
测试1:使用XML格式文件指定需要的列
- 源文件共537列,我编写了XML格式文件,只映射了需要的276列
- 目标表按照源文件的对应顺序创建了276个varchar列
- 执行的BULK INSERT语句:
BULK INSERT <table> FROM '<source file>' WITH ( FORMATFILE = '<xml format file>', FIRSTROW = 2, FIELDTERMINATOR = '|', ROWTERMINATOR = '\n', TABLOCK, KEEPNULLS, BATCHSIZE = 10000 ERRORFILE = '<error file>' );
- 结果:依然显示"0 row affected",且指定的错误文件中没有任何错误记录
测试2:不使用格式文件,导入全部列
- 为了排除格式文件的问题,我创建了包含全部537列的目标表,列顺序和数据类型(varchar)完全匹配源文件
- 直接执行无格式文件的BULK INSERT:
BULK INSERT <table> FROM '<source file>' WITH ( FIRSTROW = 2, FIELDTERMINATOR = '|', ROWTERMINATOR = '\n' );
- 结果:还是显示"0 row affected"
补充说明:源文件第一行是表头,后面确实有3行有效数据;目标表的列定义和源文件的列顺序、类型完全对应,没有不匹配的情况。
想请教各位:针对这种包含大量列的文本文件,SQL Server批量导入的最优方法是什么?我现在这种0行导入的问题可能出在哪里?有没有什么排查或解决的思路?
内容来源于stack exchange
相关产品推荐
相关产品推荐

