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

如何将SSIS不支持的EUC-TW编码文件及CSV导入为平面文件源?

解决SSIS导入不支持编码(如EUC-TW)的CSV文件问题

方法1:在Script Component中直接读取字节并转换编码

你之前用Script Component时可能误用了SSIS内置的文本读取逻辑,导致仍需指定支持的编码。正确做法是绕过内置读取,直接处理文件字节流:

  • 步骤1:添加Script Component作为源,选择「源」类型
  • 步骤2:在Script编辑器中定义好输出列(对应CSV的各个字段)
  • 步骤3:在CreateNewOutputRows方法中,直接读取文件字节并解码:
using System.IO;
using System.Text;
using Microsoft.VisualBasic.FileIO;

public override void CreateNewOutputRows()
{
    // 读取原始文件字节
    byte[] rawBytes = File.ReadAllBytes(@"C:\YourEucTwFile.csv");
    // 用EUC-TW编码解码成字符串
    Encoding eucTw = Encoding.GetEncoding("EUC-TW");
    
    // 用TextFieldParser处理带引号的CSV(更可靠)
    using (TextFieldParser parser = new TextFieldParser(new MemoryStream(rawBytes), eucTw))
    {
        parser.TextFieldType = FieldType.Delimited;
        parser.SetDelimiters(",");
        parser.HasFieldsEnclosedInQuotes = true;
        // 跳过表头(按需)
        parser.ReadLine();
        
        while (!parser.EndOfData)
        {
            string[] fields = parser.ReadFields();
            Output0Buffer.AddRow();
            // 给输出列赋值,示例:
            Output0Buffer.Name = fields[0];
            Output0Buffer.Age = int.Parse(fields[1]);
            // 其他字段依次处理
        }
    }
}

方法2:预处理文件转换编码

如果不想写脚本,可先将文件转成SSIS支持的编码(如UTF-8),再用平面文件源导入:

  • PowerShell批量转换脚本:
$source = "C:\Source\EucTwFile.csv"
$target = "C:\Target\Utf8File.csv"
Get-Content -Path $source -Encoding ([Text.Encoding]::GetEncoding("EUC-TW")) | 
Set-Content -Path $target -Encoding UTF8
  • 记事本手动转换:打开文件后选择「文件」→「另存为」,编码选UTF-8保存。

方法3:使用第三方SSIS组件

部分第三方组件(如CozyRoc、Devart)支持更多编码格式,可直接作为平面文件源使用,无需手动转换编码。注意这类组件可能需付费授权。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:42:49