SQL Server Import Wizard 64位截断错误:如何跳过错误行完成导入
解决SQL Server导入时跳过截断错误的方法
一、Visual Studio(SSIS)操作设置
- 打开SSIS项目的数据流任务,找到源到目标的数据传输路径
- 双击这条路径,打开错误输出配置窗口,在“错误”和“截断”的下拉选项里,直接选**“忽略失败”——这样遇到问题行就自动跳过,不中断整个导入进程;如果想事后排查错误,也可以选“重定向行”**,把问题行导到单独的错误表或文件里,不影响主数据导入
- 要是你用的是SQL Server导入导出向导(可在VS里启动),走到“配置错误输出”步骤时,同样把截断/错误的处理方式改成“忽略失败”或“重定向”就行
二、SQL命令批量导入(带错误跳过)
1. BULK INSERT 语句示例
BULK INSERT 目标库.dbo.目标表 FROM '你的数据文件全路径' WITH ( FIELDTERMINATOR = ',', -- 按实际分隔符调整,比如制表符用'\t' ROWTERMINATOR = '\n', ERRORFILE = 'D:\ErrorLogs\BadRows.txt', -- 错误行记录到这个文件 MAXERRORS = 1000, -- 设置允许跳过的最大错误数,按需调整 TABLOCK );
MAXERRORS:只要错误行数没超过这个值,导入就会继续;设大一点(比如1000)足够覆盖你每50万行出现一次的错误频率ERRORFILE:自动记录错误行的内容和位置,事后再处理就行
2. OPENROWSET 批量导入示例
INSERT INTO 目标库.dbo.目标表 SELECT * FROM OPENROWSET( BULK '你的数据文件全路径', FORMATFILE = 'D:\Format\TableFormat.xml', -- 提前生成格式文件 ERRORFILE = 'D:\ErrorLogs\BadRows.txt', MAXERRORS = 1000 ) AS ImportData;
格式文件可以用bcp命令生成(命令行执行):
bcp 源库.dbo.源表 format nul -c -x -f D:\Format\TableFormat.xml -S 你的服务器名 -U 用户名 -P 密码
三、额外优化建议
- 先核对源表和目标表的字段长度,把目标表字段设成和源表一致,能从根源减少截断错误
- 用SSIS的话,还可以加个派生列组件,提前把过长的字段截断到目标表允许的长度,避免触发错误
内容的提问来源于stack exchange,提问作者Francesco
相关产品推荐
相关产品推荐

