[英]How to Copy Data (Rows) of Sql Server into MySql in Real-time Using Java Code?
我有一個GPS跟蹤器設備,其數據默認情況下已插入Sql Server,但問題是我想在MySql中創建數據庫。
因此,建議如何實時將Sqlserver的數據復制或遷移到MySql中。
我正在開發您要的解決方案。 我在eclipse兩個庫中添加了構建路徑:
mysql-connector-java-5.1.18-bin.jar(對於MySQL) http://www.mysql.it/downloads/connector/j/
jtds-1.3.0.jar(用於MSSQL) http://jtds.sourceforge.net/
如果您使用Eclipse,則最好下載SQL Explorer,然后嘗試使用它進行連接。 您必須用於連接的字符串是:
String url="jdbc:jtds:sqlserver://IP-SERVER:1433/DB";
String url2="jdbc:mysql://IP-SERVER:3306/DB";
在此之前,如果您不在本地主機下,則必須注意MySQL和MSSQL接受外部連接。 對於MySQL,您必須在配置文件中修改默認值為127.0.0.1的參數bind,將其更改為0.0.0.0(不安全)或使用允許的IP列表進行更改。 對於MSSQL,您必須確保已啟用TCP-IP,並且默認端口為1433。
在Java中,您可以輕松地打開兩個不同的連接,並在不同的DB之間復制記錄。 例如,如果您需要從本地的MSSQL復制到MySQL的遠程數據庫,則最好使用PreparedStatement來提高性能,這是一個好主意。 在這里,我刪除了一段沒有異常處理程序的代碼,以使消息更簡短。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
java.sql.Statement s;
java.sql.ResultSet rs;
java.sql.Statement s2;
java.sql.ResultSet rs2;
java.sql.PreparedStatement psmtMySQL;
con = DriverManager.getConnection(url, id, pass);
con2 = DriverManager.getConnection(url2, id2, pass2);
if(con!=null && con2!=null){
try{
s = con.createStatement();
rs = s.executeQuery(sql);
sql ="INSERT INTO TABLE (FIELD1, FIELD2, FIELD3) " + "VALUES (?,?,?);";
con2.setAutoCommit(false);
psmtMySQL = con2.prepareStatement(sql);
con2.setAutoCommit(true);
while( rs.next() ){
try {
psmtMySQL.setLong(1, rs.getLong("Field1"));
psmtMySQL.setLong(2, rs.getLong("Field2"));
psmtMySQL.setString(3, rs.getString("Field3"));
psmtMySQL.addBatch() ;
} catch (SQLException sqle){
sqle.printStackTrace();
}
}
psmtMySQL.executeBatch();
con2.setAutoCommit(true);
psmtMySQL.close();
rs2.close();
s2.close();
conn2.close();
rs.close();
s.close();
conn.close();
您可以安排一個批處理作業,該作業將使用JDBC(或休眠)從SQL Server讀取數據並將其插入MySQL Server。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.