You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 2016导入含内嵌文本限定符文件时遇0xc0202055错误

问题描述

使用SQL Server 2016和Visual Studio 2017的SQL Server导入导出向导导入CSV文件时,预览数据显示正常,但执行导入任务时在第2条记录抛出错误:

Error 0xc0202055: Data Flow Task 1: 未找到列""COLUMN1""的列分隔符。(SQL Server Import and Export Wizard)

源CSV文件内容如下:

"COLUMN1""COLUMN2"
"KEVIN THOMAS""123 Main Street"
"GEORGE "Geo" LEWIS""345 Tree Line Ave"

问题核心在于第二条记录的COLUMN1字段包含嵌套的双引号("Geo"),导致导入向导的解析逻辑混乱,误以为字段提前结束,找不到后续的列分隔符。尽管预期SQL Server 2016已修复类似问题,但SSMS导入向导和VS2017均出现相同报错。

解决方案

1. 修正源文件格式(推荐)

CSV标准中,字段内部的双引号需要用两个连续双引号转义,而非单个双引号。将源文件的第二条记录修改为:

"GEORGE ""Geo"" LEWIS","345 Tree Line Ave"

修改后重新导入,向导会正确识别嵌套引号,不会再抛出分隔符缺失错误。

2. 调整平面文件连接管理器的转义设置

如果无法修改源文件,可在导入向导的平面文件连接管理器中调整配置:

  • 打开平面文件连接管理器的高级设置界面
  • 找到限定符转义符选项,将其设置为"(双引号)
  • 确保文本限定符已设置为"
  • 保存配置后重新执行导入任务

此设置会告诉解析器:字段内的单个双引号是转义符,而非字段结束标记。

3. 使用脚本组件手动处理字段

若上述方法无效,可在数据流任务中添加脚本组件,手动处理包含嵌套引号的字段:

  1. 在数据流中,将平面文件源的输出连接到脚本组件(作为转换组件)
  2. 在脚本组件中,针对COLUMN1字段编写逻辑,去除内部的嵌套双引号或重新格式化:
    // 示例C#代码:移除字段内的单个双引号,保留外部限定符
    string originalValue = Row.COLUMN1;
    if (!string.IsNullOrEmpty(originalValue))
    {
        // 去掉首尾的双引号,再替换内部的单个双引号为空
        string cleanedValue = originalValue.Substring(1, originalValue.Length - 2).Replace("\"", "");
        // 重新添加首尾双引号(可选,根据目标表需求调整)
        Row.COLUMN1 = $"\"{cleanedValue}\"";
    }
    
  3. 将脚本组件的输出连接到目标数据库表

4. 使用BULK INSERT语句导入

若向导始终无法正常解析,可直接使用T-SQL的BULK INSERT命令,指定正确的格式参数:

BULK INSERT YourTargetTable
FROM 'C:\YourFile.csv'
WITH (
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '\n',
    FIRSTROW = 2, -- 跳过表头
    QUOTED_IDENTIFIER = ON,
    ESCAPECHAR = '"' -- 指定双引号为转义符
);

内容的提问来源于stack exchange,提问作者Kevin McDonald

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 08:00:17