sql >> Databasteknik >  >> RDS >> Mysql

SQL Server till MySQL dataöverföring

Jag använde jdbc-odbc-bryggan i Java för att göra just detta tidigare, men prestanda genom ODBC är inte bra. Jag skulle föreslå att du tittar på något som http://jtds.sourceforge.net/ som är en ren Java-drivrutin som du kan släppa in i ett enkelt Groovy-skript som följande:

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
}

Följande prestandasiffror ger dig en känsla för hur det kan prestera:http://jtds.sourceforge.net /benchTest.html

Du kan hitta några prestandafördelar med att dumpa data till ett mysql dumpfilformat och använda mysql loaddata istället för att skriva rad för rad. MySQL har några betydande prestandaförbättringar för stora datamängder om du laddar infiler och gör saker som atombordsbyten.

Vi använder något sånt här för att snabbt ladda in stora datafiler i mysql från ett system till ett annat t.ex. Detta är den snabbaste mekanismen för att ladda data till mysql. Men realtid rad för rad kan vara en enkel loop att göra i groovy + någon tabell för att hålla reda på vilken rad som hade flyttats.

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


  1. Exportera Blob från MySQL-databas till fil med endast SQL

  2. Vilka är begränsningarna för MS Access?

  3. minneseffektiv inbyggd SqlAlchemy iterator/generator?

  4. Ansluter till mysql i xampp utan lösenord