SSIS:源有UNICODE数据;我正在使用 MySQL 64 位 ANSI ODBC 驱动程序

SSIS: Source has UNICODE data; I'm using MySQL 64bit ANSI ODBC driver

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

是否有解决此问题的方法(除了切换到 Unicode 驱动程序)?

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

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

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

解决方案实际上取决于当前和未来潜在的数据需求。希望对您有所帮助。

更新:

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


https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html
https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html

这有效:CONVERT(column Name USING ASCII) as column Name