SQL Server到MySQL的数据传输

时间:2011-08-15 22:01:30

标签: mysql sql-server connection odbc oledb

我正在尝试将基于SQL Server数据库的常量和连续的批量数据传输到MYSQL数据库。我想使用SQL Server的SSMS复制,但这显然只适用于SQL Server到Oracle或IBM DB2连接。目前,我们正在使用SSIS转换数据并将其推送到MYSQL数据库的临时位置,在该位置复制数据。我想以最快的方式传输数据和复杂的几种方法。

我有一种新方法,我计划转换数据,我相信这将解决大部分时间问题,但我想确保我们将来不会遇到时间问题。我已经设置了一个链接服务器,它使用MYSQL ODBC驱动程序在SQL Server和MYSQL之间进行通信。这看起来非常慢。我有一些代码也使用Microsoft的ODBC驱动程序,但使用得太少,我无法衡量性能。有谁知道在这两个数据库之间快速通信的方式?我一直在研究MYSQL的数据提供程序,它们似乎与OleDB层进行通信。我不太确定该相信什么,以及指导哪种方式,任何想法?

4 个答案:

答案 0 :(得分:1)

我发现传输SQL数据的最佳方法(如果你有空间)是一种语言的SQL转储,然后使用转换软件工具(或perl脚本,两者都很普遍)来转换SQL转储MSSQL到MySQL。请参阅我对this关于您可能感兴趣的转换器的问题的回答:)。

答案 1 :(得分:1)

我过去使用Java中的jdbc-odbc桥来做这件事,但是通过ODBC的性能不是很好。我建议查看像http://jtds.sourceforge.net/这样的纯Java驱动程序,您可以将其放入一个简单的Groovy脚本中,如下所示:

import groovy.sql.Sql
sql = Sql.newInstance( 'jdbc:jtds:sqlserver://serverName/dbName-CLASS;domain=domainName',     
'username', 'password', 'net.sourceforge.jtds.jdbc.Driver' )
sql.eachRow( 'select * from tableName' ) { 
  println "$it.id -- ${it.firstName} --" 
  // probably write to mysql connection here or write to file, compress, transfer, load
}

以下性能数字可让您了解它的执行方式: http://jtds.sourceforge.net/benchTest.html

您可能会发现将数据转储为mysql转储文件格式并使用mysql loaddata而不是逐行写入的一些性能优势。如果加载infile并执行诸如原子表交换之类的操作,MySQL对大型数据集有一些显着的性能改进。

我们使用类似的东西将大型数据文件快速加载到mysql中,从一个系统到另一个系统,例如这是将数据加载到mysql的最快机制。但实时逐行可能是一个简单的循环,在groovy +一些表中,以跟踪已移动的行。

mysql> select * from table into outfile 'tablename.dat';  

shell> myisamchk --keys-used=0 -rq '/data/mysql/schema_name/tablename'

mysql> load data infile 'tablename.dat' into table tablename;

shell> myisamchk -rq /data/mysql/schema_name/tablename

mysql> flush tables;
mysql> exit;

shell> rm tablename.dat

答案 2 :(得分:0)

我们在ssis中使用了用于mysql的ado.net驱动程序并取得了相当大的成功。基本上,在安装了集成服务的计算机上安装驱动程序,重新启动出价,并在创建ado.net连接管理器时显示在驱动程序列表中。

至于复制,你究竟想要完成什么?

如果您正在监控更改,请将其视为类型1缓慢更改的维度(数据仓库术语,但适用相同的主体)。插入新记录,更新已更改的记录。

如果您只对新记录感兴趣并且没有计划更新以前加载的数据,请尝试增量加载策略。在source.id>中插入记录MAX(destination.id)。

在测试软件包之后,在sql server代理程序中安排一个作业,每x分钟运行一次该软件包。

答案 3 :(得分:0)

Cou也可以尝试以下方法。 http://kofler.info/english/mssql2mysql/

我之前尝试过这段时间,这对我有用。但我不推荐给你。 什么是真正的问题,你尝试做什么? 你不能得到MSSQL数据库连接,例如Linux?