importjava.sql.*;
publicclassSQLite_To_MySQL{
privateConnectiongetIteconn(){
try{
Class.forName("org.sqlite.JDBC");
returnDriverManager.getConnection("jdbc:sqlite:E:\MyDB\lagou.db");
}catch(ClassNotFoundException|SQLExceptione){
e.printStackTrace();
}
returnnull;
}
privateConnectiongetMysqlconn(){
try{
Class.forName("org.mariadb.jdbc.Driver");
returnDriverManager.getConnection("jdbc:mariadb://localhost:3306/test","oukele","oukele");
}catch(ClassNotFoundException|SQLExceptione){
e.printStackTrace();
}
returnnull;
}
publicvoiddeal()throwsSQLException{
//SQLite数据库
Connectioniteconn=getIteconn();
Statementitestmt=iteconn.createStatement();
ResultSetiters=itestmt.executeQuery("select*fromlagou_position");
//结果集获取到的长度
intsize=iters.getMetaData().getColumnCount();
//比较懒,拼接insertinto语句
StringBuffersbf=newStringBuffer();
sbf.append("insertintolagouvalues(");
Stringlink="";
for(inti=0;i
sbf.append(link).append("?");
link=",";
}
sbf.append(")");
//MySQL数据库
Connectionmysqlconn=getMysqlconn();
PreparedStatementmysqlpstmt=mysqlconn.prepareStatement(sbf.toString());
//取出结果集并向MySQL数据库插入数据(使用批处理)
//完成条数
intcount=0;
intnum=0;
//取消事务(不写入日志)
mysqlconn.setAutoCommit(false);
longstart=System.currentTimeMillis();
while(iters.next()){
++count;
for(inti=1;i<=size;i++){
mysqlpstmt.setObject(i,iters.getObject(i));
}
//将预先语句存储起来,这里还没有向数据库插入
mysqlpstmt.addBatch();
//当count到达20000条时向数据库提交
if(count%20000==0){
++num;
mysqlpstmt.executeBatch();
System.out.println("第"+num+"次提交,耗时:"+(System.currentTimeMillis()-start)/1000.0+"s");
}
}
//防止有数据未提交
mysqlpstmt.executeBatch();
//提交
mysqlconn.commit();
System.out.println("完成"+count+"条数据,耗时:"+(System.currentTimeMillis()-start)/1000.0+"s");
//恢复事务
//mysqlconn.setAutoCommit(true);
//关闭资源
close(mysqlconn,mysqlpstmt,null);
close(iteconn,itestmt,iters);
}
publicvoidclose(Connectionconn,Statementstmt,ResultSetrs){
if(rs!=null){
try{
rs.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
if(stmt!=null){
try{
stmt.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
if(conn!=null){
try{
conn.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
}
}