簡體   English   中英

如何使用Java代碼將Sql Server的數據(行)實時復制到MySql中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM