Java实现两个数据库数据的迁移  原料:mysql,sqlite3
  思想步骤:
    ⾸先从⼀个数据库取出数据,每取⼀条就添加到另⼀个数据库。
  ⽰例:
import java.sql.*;
public class SQLite_To_MySQL {
private Connection getIteconn(){
try {
Class.forName("org.sqlite.JDBC");
Connection("jdbc:sqlite:E:\\MyDB\\lagou.db");
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
return null;
}
private Connection getMysqlconn(){
try {
Class.forName("org.mariadb.jdbc.Driver");
Connection("jdbc:mariadb://localhost:3306/test","oukele","oukele");
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
return null;
}
public void deal() throws SQLException {
//SQLite数据库
Connection iteconn = getIteconn();
Statement itestmt =ateStatement();
ResultSet iters = uteQuery("select * from lagou_position");
//结果集获取到的长度
int size = MetaData().getColumnCount();
//⽐较懒,拼接insert into 语句
StringBuffer sbf =new StringBuffer();
sbf.append("insert into lagou values (");
String link ="";
for (int i = 0; i <size ; i++) {
sbf.append(link).append("?");
link=",";
}
sbf.append(")");
//MySQL数据库
Connection mysqlconn = getMysqlconn();
PreparedStatement mysqlpstmt = mysqlconn.String());
//取出结果集并向MySQL数据库插⼊数据 ( 使⽤批处理 )
/
mysql数据库迁移命令/完成条数
int count =0;
int num=0;
//取消事务(不写⼊⽇志)
mysqlconn.setAutoCommit(false);
long start = System.currentTimeMillis();
while (()) {
++count;
for (int i=1;i<= size;i++) {
mysqlpstmt.setObject(i, Object(i));
}
/
/将预先语句存储起来,这⾥还没有向数据库插⼊
mysqlpstmt.addBatch();
//当count 到达 20000条时向数据库提交
if (count % 20000 ==0 ){
++num;
System.out.println("第"+num+"次提交,耗时:"+(System.currentTimeMillis()-start)/1000.0+"s");
}
}
//防⽌有数据未提交
/
/提交
mysqlconnmit();
System.out.println("完成 "+count+" 条数据,耗时:"+(System.currentTimeMillis()-start)/1000.0+"s");
//恢复事务
// mysqlconn.setAutoCommit(true);
//关闭资源
close(mysqlconn,mysqlpstmt,null);
close(iteconn,itestmt,iters);
}
public  void  close(Connection conn,Statement stmt,ResultSet rs){        if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
  调⽤:
public static void main(String[] args) {
SQLite_To_MySQL test = new SQLite_To_MySQL();
try {
test.deal();
} catch (SQLException e) {
e.printStackTrace();
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。