sql >> Databáze >  >> RDS >> Mysql

Přenos dat ze serveru SQL do MySQL

V minulosti jsem k tomu používal jdbc-odbc bridge v Javě, ale výkon přes ODBC není skvělý. Navrhoval bych podívat se na něco jako http://jtds.sourceforge.net/ což je čistě Java ovladač, který můžete umístit do jednoduchého skriptu Groovy, jako je tento:

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
}

Následující čísla výkonu vám dávají představu, jak by mohl fungovat:http://jtds.sourceforge.net /benchTest.html

Některé výkonnostní výhody můžete najít při ukládání dat do formátu mysql dumpfile a používání mysql loaddata místo zápisu řádek po řádku. MySQL má některá významná vylepšení výkonu pro velké datové sady, pokud načtete infile a děláte věci, jako je výměna atomických tabulek.

Něco takového používáme k rychlému načtení velkých datových souborů do mysql z jednoho systému do druhého, např. Toto je nejrychlejší mechanismus pro načítání dat do mysql. Ale v reálném čase řádek po řádku může být jednoduchá smyčka, kterou lze udělat v groovy + nějaká tabulka pro sledování toho, který řádek byl přesunut.

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. mysql abecední pořadí

  2. Zobrazte mysql v html tabulce pomocí Node.js

  3. Jak používat JSTL sql tag

  4. Úprava pro výchozí nastavení časového pásma na RDS