W przeszłości używałem do tego mostu jdbc-odbc w Javie, ale wydajność przez ODBC nie jest świetna. Proponuję spojrzeć na coś takiego jak http://jtds.sourceforge.net/ który jest czystym sterownikiem Java, który można wrzucić do prostego skryptu Groovy, takiego jak:
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
}
Poniższe dane dotyczące wydajności dają wyobrażenie, jak może działać:http://jtds.sourceforge.net /test testowy.html
Możesz znaleźć pewne zalety wydajnościowe, zrzucając dane do formatu pliku zrzutu mysql i używając mysql loaddata zamiast pisać wiersz po wierszu. MySQL ma kilka znaczących ulepszeń wydajności dla dużych zestawów danych, jeśli ładujesz pliki infile i robisz takie rzeczy, jak atomowa zamiana tabel.
Używamy czegoś takiego, aby szybko ładować duże pliki danych do mysql z jednego systemu do drugiego, np. Jest to najszybszy mechanizm ładowania danych do mysql. Ale wiersz po wierszu w czasie rzeczywistym może być prostą pętlą do wykonania w groovy + tabela do śledzenia, który wiersz został przeniesiony.
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