【问题标题】:Special characters in SSISSSIS 中的特殊字符
【发布时间】:2020-05-23 06:30:42
【问题描述】:

我正在将带有特殊字符的 CSV 文件加载到 SSIS,我需要将相同的特殊字符写入数据库。但目前例如, “Alfred Kärcher GmbH & Co. KG”已更改为“Alfred Kärcher GmbH & Co. KG”。它写入数据库不正确。有没有办法停止 SSIS 中的字符转换? 我该如何解决这个问题?我没有任何平面文件连接。我尝试了很多方法,但没有成功。

谢谢

【问题讨论】:

  • 如果您没有任何平面文件连接,您的 CSV 文件的数据流中有哪些数据源?
  • 我有 OLEDB 源
  • 那么请添加一个示例,说明您的源查询如何查找 CSV 文件导入
  • 我添加了快照。谢谢
  • 您确定目标表的代码正确吗?我会在初次读取后插入一个数据查看器,以确保这是我的问题所在。

标签: csv ssis


【解决方案1】:

显然,您的 csv 源文件中的信息具有 UTF-8 编码,其中“ä”字符被编码为两个字节:C3 A4,但在加载期间它被解释为 ANSI 编码,导致将字节作为单独的字符:“à ”和“¤”。 有两种类似的方法可以解决它,具体取决于您的目标表是使用 varchar 还是 nvarchar 数据类型。 因为它已转换为 ANSI Latin1 编码 CP1252,所以我假设您使用的数据类型类型为 varchar。 基本上,您需要使用代码页 65001 (UTF-8) 读取文件,然后使用派生列转换,您可以使用强制转换表达式为 csv 文件中的每个文本字段添加派生列,例如 (DT_STR,50,1252)LastName . 在文件中为非整数列添加其他派生列以避免错误“无法处理该列,因为为其指定了多个代码页(65001 和 1252)”.. 在目标上,确保目标列映射到派生列而不是原始列。

如果您的目标表具有 nvarchar 类型,请使用数据转换而不是派生列转换并选择数据类型 Unicode 字符串 [DT_WSTR]。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-27
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多