मैंने अतीत में ऐसा करने के लिए जावा में jdbc-odbc ब्रिज का उपयोग किया था, लेकिन ODBC के माध्यम से प्रदर्शन बहुत अच्छा नहीं है। मेरा सुझाव है कि कुछ इस तरह देखें http://jtds.sourceforge.net/ जो एक शुद्ध जावा ड्राइवर है जिसे आप निम्न की तरह एक साधारण ग्रूवी स्क्रिप्ट में छोड़ सकते हैं:
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 लोडडेटा का उपयोग करने के लिए कुछ प्रदर्शन लाभ मिल सकते हैं। यदि आप इनफाइल को लोड करते हैं और एटॉमिक टेबल स्वैप जैसी चीजें करते हैं, तो बड़े डेटा सेट के लिए MySQL में कुछ महत्वपूर्ण प्रदर्शन सुधार हैं।
हम एक सिस्टम से दूसरे सिस्टम में बड़ी डेटाफाइल्स को जल्दी से mysql में लोड करने के लिए कुछ इस तरह का उपयोग करते हैं। यह MySQL में डेटा लोड करने का सबसे तेज़ तंत्र है। लेकिन पंक्ति से वास्तविक समय पंक्ति ग्रोवी + कुछ तालिका में करने के लिए एक साधारण लूप हो सकती है ताकि यह पता चल सके कि किस पंक्ति को स्थानांतरित किया गया था।
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