Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSIS:源具有UNICODE数据;I';m使用MySQL 64位ANSI ODBC驱动程序_Mysql_Ssis_Odbc_Mysql Odbc Connector - Fatal编程技术网

SSIS:源具有UNICODE数据;I';m使用MySQL 64位ANSI ODBC驱动程序

SSIS:源具有UNICODE数据;I';m使用MySQL 64位ANSI ODBC驱动程序,mysql,ssis,odbc,mysql-odbc-connector,Mysql,Ssis,Odbc,Mysql Odbc Connector,源代码有Unicode数据,但我使用的是MySQL 64位ODBC ANSI驱动程序,该驱动程序在部分加载后抛出错误(遇到几个特殊字符后出错) 除了切换到Unicode驱动程序之外,还有其他解决方法吗?SSIS对元数据的要求非常严格。您有两种选择:切换驱动程序或将源数据重新编码为ANSI 还有第三种选择:将UNICODE数据提取到CSV文件,然后通过平面文件连接加载该文件。从那里,您可以指示连接管理器使用ANSI或UNICODE 我通过平面文件导入实现了一种更具可伸缩性的方法,允许通过Power

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


除了切换到Unicode驱动程序之外,还有其他解决方法吗?

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

这起作用了:将(columnName使用ASCII)转换为columnName

谢谢@J Weezy。。我们可以对SSIS中提取数据的表达式做些什么吗?像铸造还是什么?@KarthikDoure当你说表达式时,我理解一个变量表达式。从这个意义上说,;不,我不知道如何更改表达式中的元数据。元数据除外。我可以更改MySQL查询以将ANSI转换为Unicode吗?看起来是这样的-convert(columnName使用ASCII)@KarthikDoure我明白你的意思了。是的,你能做到。