0

源具有 Unicode 数据,但我使用的是 MySQL 64 位 ODBC ANSI 驱动程序,该驱动程序在部分加载后抛出错误(遇到几个特殊字符后出现错误)。

是否有任何解决方法(除了切换到 Unicode 驱动程序)?

4

2 回答 2

0

SSIS 对元数据要求非常严格。您有两个选择:切换驱动程序或将源数据重新编码为 ANSI。

还有第三种选择:将 UNICODE 数据提取到 CSV 文件,然后通过平面文件连接加载文件。从那里,您可以指示连接管理器使用 ANSI 或 UNICODE。

通过允许通过 PowerShell 脚本(当然是数字签名)转换 .NET 支持的任何编码,我通过平面文件导入实现了一种更具可扩展性的方法。在这种情况下,数据提供者可以向我扔任何东西,我可以在加载之前将其编码为 ANSI。

解决方案实际上取决于当前和潜在的未来数据需求是什么。我希望这会有所帮助。

更新:

我不是 MySQL 专家,因为我不开发它。如果您在服务器中使用本机转换函数,您可能想完全了解它在从 UNICODE 到 ANSI 时如何处理 varchar 和 nvarchar 字符串的转换。同样,我将重新编码转交给 .NET,而不是服务器功能。

https://stackoverflow.com/questions/32367311/convert-to-ascii-char-in-sql-server
https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html
https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html
于 2018-08-01T16:52:01.047 回答
0

这有效: CONVERT(columnName USING ASCII) as columnName

于 2018-08-01T21:02:01.530 回答