源代码有unicode数据,但我使用的是mysql 64位odbc ansi驱动程序,它在部分加载后抛出错误(遇到几个特殊字符后出错)。有没有解决方法(除了切换到unicode驱动程序)?
uurv41yg1#
这是有效的:convert(columnname使用ascii)作为columnname
bksxznpy2#
ssis对元数据的要求非常严格。您有两种选择:切换驱动程序或将源数据重新编码为ansi。还有第三种选择:将unicode数据提取到csv文件,然后通过平面文件连接加载该文件。从那里,您可以指示连接管理器使用ansi或unicode。我通过平面文件导入实现了一种更具可伸缩性的方法,允许通过powershell脚本(当然是数字签名)转换.net支持的任何编码。在这种情况下,数据提供者可以向我抛出任何东西,我可以在加载之前将其编码为ansi。解决方案实际上取决于当前和未来潜在的数据需求。我希望这对你有帮助。更新:我不是mysqlMaven,因为我不了解它。如果您在服务器中使用本机转换函数,您可能需要完全了解它在从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
2条答案
按热度按时间uurv41yg1#
这是有效的:convert(columnname使用ascii)作为columnname
bksxznpy2#
ssis对元数据的要求非常严格。您有两种选择:切换驱动程序或将源数据重新编码为ansi。
还有第三种选择:将unicode数据提取到csv文件,然后通过平面文件连接加载该文件。从那里,您可以指示连接管理器使用ansi或unicode。
我通过平面文件导入实现了一种更具可伸缩性的方法,允许通过powershell脚本(当然是数字签名)转换.net支持的任何编码。在这种情况下,数据提供者可以向我抛出任何东西,我可以在加载之前将其编码为ansi。
解决方案实际上取决于当前和未来潜在的数据需求。我希望这对你有帮助。
更新:
我不是mysqlMaven,因为我不了解它。如果您在服务器中使用本机转换函数,您可能需要完全了解它在从unicode转换到ansi时如何处理varchar和nvarchar字符串的转换。同样,我将重新编码转换为.net,而不是服务器函数。