我正在尝试使用SSIS将表从SQL Server传输到MySQL,并且在SQL Server上的varchar(max)和MySQL上的文本的一列上失败。到目前为止,我已经尝试过将这作为从OLE DB到ODBC的数据流,以及将BCP输出到平面文件到ODBC的数据流。有问题的字段在SSIS中配置为DT_TEXT。在这两种情况下,它都会产生以下一组错误:
[ODBC目标[47]]错误:发生打开数据库连接(ODBC)错误。插入行1时SQLExecute返回错误
[ODBC目标[47]]错误:发生打开数据库连接(ODBC)错误。状态:“ HYC00”。本机错误代码:0。[MySQL] [ODBC 5.2(a)驱动程序] [mysqld-5.1.69-log]不支持带有执行数据的参数数组
[SSIS.Pipeline]错误:SSIS错误代码DTS_E_PROCESSINPUTFAILED。处理输入“ ODBC目标输入”(58)时,组件“ ODBC目标”(47)上的ProcessInput方法失败,错误代码为0x80004005。所标识的组件从ProcessInput方法返回了错误。该错误是特定于组件的,但该错误是致命的,将导致“数据流”任务停止运行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。
当我选择忽略该列时,该软件包的两个版本均可正常运行。
我还想指出,以前这是通过使用带有openquery的链接服务器完成的,并且可以正常工作。但是,由于性能问题,我们正试图脱离链接服务器。
更新:
我设法使用SQL ServerBCP out
和MySQL来完成期望的行为,LOAD DATA INFILE
但是很高兴知道如何使用SSIS数据流来完成此操作,因为这绝对是更简单的方法,并且由于它在内存中运行而应该更快。
确保源和目标中的文本编码相同,否则,请确保在SSIS中进行适当的转换。
如果这是问题的话,下面的文章可能会有所帮助-它正在朝另一个方向发展(从MySQL到SQL Server),但其中包含有关两个数据库中使用的编码类型的一些有用信息,以及一些有关如何进行传输的示例进行此类转换:
http://agilebi.com/ddarden/2010/09/19/extracting-mysql-utf-8-fields-with-ssis/
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句