直接粘贴代码

注意:rewriteBatchedStatements=true(加快连接速度)

package com.wbg;

import org.omg.Messaging.SYNC_WITH_TRANSPORT;

import java.sql.*;
import java.util.ArrayList;
import java.util.List; public class DBSQLite {
//驱动
static String DBDRIVERSQLITE="org.sqlite.JDBC";
//文件绝对地址
static String DBURLSQLITE="B:\\lagou.db";
static Connection CONNSQLITE;
static PreparedStatement PSTATSQLITE; //驱动
static String DBDRIVERMYSQL="com.mysql.jdbc.Driver";
//数据库
static String DBURLMYSQL="jdbc:mysql://localhost:3306/ii?rewriteBatchedStatements=true";//comoany是数据库
static Connection CONNMYSQL;
static PreparedStatement PSTATMYSQL; static {
try {
Class.forName(DBDRIVERSQLITE);
CONNSQLITE= DriverManager.getConnection("jdbc:sqlite:"+DBURLSQLITE); Class.forName(DBDRIVERMYSQL);
CONNMYSQL=DriverManager.getConnection(DBURLMYSQL,"root","123456"); } catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 获取数据库中所有表
*/
public static List<String> getTable(){
System.out.println("开始获取数据表");
//数据库
DatabaseMetaData md=null;
List<String> list=new ArrayList<>();
try {
//获取数据库
md = CONNSQLITE.getMetaData();
} catch (SQLException e) {
e.printStackTrace();
}
try {
//进行查询表
ResultSet rs=md.getTables(null,null,null,null);
if (rs!= null) {
list = new ArrayList<String>();
}
//往list添加查询到的表
while (rs.next()){
list.add(rs.getString("TABLE_NAME"));
}
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println("查询数据表成功");
return list;
}
/**
* 向mysql创建数据表
*/
public static void createTable(){
ResultSetMetaData rsmd = null;
//获取所有数据库
List<String> list=DBSQLite.getTable();
for (int i = 0; i < list.size(); i++) {
long srop=System.currentTimeMillis();
System.out.println("开始创建第" + (i + 1 )+ "数据表...");
//查询表
String sql = "select * from " + list.get(i);
int size = 0;
try {
PSTATSQLITE = CONNSQLITE.prepareStatement(sql);
//获取数据表
rsmd = PSTATSQLITE.getMetaData();
//创建语句
String create = "create table " + list.get(i) + "(";
//fh目的最后一个没有逗号
String fh = "";
//循环表中所有字段
size = rsmd.getColumnCount();
for (int j = 0; j < size; j++) {
//字段名 类型
create += fh + rsmd.getColumnName(j + 1) + " " + rsmd.getColumnTypeName(j + 1);
//判断长度是否不为0 比如varchar(10) integer
if (rsmd.getPrecision(j + 1) != 0) {
//不为0就给个长度
create += "(" + rsmd.getPrecision(j + 1) + ")";
}
fh = ",";
}
create += ");";
execute(create);
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println("开始向(" + list.get(i) + ")数据表添加数据...");
if (insertTable( list.get(i), size)){
System.out.println("第" + (i + 1 ) + "个数据表数据录入完毕");
}
else {
System.out.println("第" + (i + 1 ) + "个数据表数据录入失败");
}
}
}
/**
* 向mysql数据表录入数据
* sql 查询语句 size 字段长度
*/
public static boolean insertTable(String sql,int size){
ResultSet rs=executeQuerySQLITE("select * from "+sql);
try {
String fh="";
String sqladd="insert into "+sql+" values(";
for (int i = 0; i < size; i++) {
sqladd+=(fh+"?");
fh=",";
}
sqladd+=")";
//关闭自动提交
CONNMYSQL.setAutoCommit(false);
PSTATMYSQL=CONNMYSQL.prepareStatement(sqladd); while (rs.next()){ for (int i = 0; i < size; i++) {
PSTATMYSQL.setObject(i+1,rs.getObject(i+1));
}
PSTATMYSQL.addBatch();
}
PSTATMYSQL.executeBatch();
//提交
CONNMYSQL.commit();
//打开自动提交
CONNMYSQL.setAutoCommit(true);
} catch (SQLException e) {
e.printStackTrace();
}
return true;
}
public static ResultSet executeQuerySQLITE(String sql){
try {
PSTATSQLITE=CONNSQLITE.prepareStatement(sql);
return PSTATSQLITE.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public static void execute(String sql){
try {
PSTATMYSQL=CONNMYSQL.prepareStatement(sql);
PSTATMYSQL.execute();
} catch (SQLException e) {
System.out.println("创建数据库失败");
}
}
public static int executeUpdate(String sql ,Object[]in){
try {
PSTATMYSQL =CONNMYSQL.prepareStatement(sql);
for (int i = 0; i <in.length; i++){
PSTATMYSQL.setObject(i+1,in[i]);
}
return PSTATMYSQL.executeUpdate(); } catch (SQLException e) {
e.printStackTrace();
}
return 0;
} public static void main(String[] args) {
long start= System.currentTimeMillis();
System.out.println("开始迁移数据");
createTable();
System.out.println("迁移完毕,耗时:"+(System.currentTimeMillis()-start)/1000);
}
}

使用jdk进行数据迁移(sqlite迁移mysql)的更多相关文章

  1. sqlite迁移mysql(导入导出数据)

    第一步,将数据导出 进入sqlite3->.open [打开文件路径]->.cd [要保存的路径]->.output [导出文件名字.sql]->.dump 等待导出成功后,就 ...

  2. mysql迁移之巨大数据量快速迁移方案

    mysql迁移之巨大数据量快速迁移方案-增量备份及恢复 --chenjianwen 一.前言: 当mysql库的大小达到几十个G或者上百G,迁移起来是一件非常费事的事情,业务中断,导出导入耗费大量的时 ...

  3. Mysql学习总结(35)——Mysql两千万数据优化及迁移

    最近有一张2000W条记录的数据表需要优化和迁移.2000W数据对于MySQL来说很尴尬,因为合理的创建索引速度还是挺快的,再怎么优化速度也得不到多大提升.不过这些数据有大量的冗余字段和错误信息,极不 ...

  4. 从云数据迁移服务看MySQL大表抽取模式

    摘要:MySQL JDBC抽取到底应该采用什么样的方式,且听小编给你娓娓道来. 小编最近在云上的一个迁移项目中被MySQL抽取模式折磨的很惨.一开始爆内存被客户怼,再后来迁移效率低下再被怼.MySQL ...

  5. 一面数据: Hadoop 迁移云上架构设计与实践

    背景 一面数据创立于 2014 年,是一家领先的数据智能解决方案提供商,通过解读来自电商平台和社交媒体渠道的海量数据,提供实时.全面的数据洞察.长期服务全球快消巨头(宝洁.联合利华.玛氏等),获得行业 ...

  6. zabbix数据库mariadb从服务器迁移到云mysql数据库的操作

    zabbix数据库mariadb从本机迁移到云mysql数据库的操作 1.将zabbix数据库导出,并导入到云数据库中 由于数据库较大,如果直接使用shell会话中断会导致数据库导出或者导入失败,使用 ...

  7. [saiku] 将saiku自带的H2嵌入式数据库迁移到本地mysql数据库

    saiku数据库的表和用户默认创建是在启动项目的时候,通过初始化 saiku-beans.xml 中的 h2database 这个 bean 执行org.saiku.service.Database类 ...

  8. Saiku数据库迁移H2迁移到Mysql(二十二)

    Saiku数据库迁移H2迁移到Mysql Saiku默认使用H2数据库来存储saiku的用户与角色信息,我们可以根据角色来做saiku的权限控制,然后将角色分配给用户 ,该用户就会有对应的约束了! 由 ...

  9. 使用数据泵+dblink迁移数据库,适用于本地空间不足的情况

    col name for a40 select name,locks,pins from v$db_object_cache where locks > 0 and pins > 0 an ...

随机推荐

  1. 转 Comparison of Red Hat and Oracle Linux kernel versions and release strings

    Originally derived from Red Hat Enterprise Linux (RHEL), Oracle Linux (OL) contains minor difference ...

  2. spark RDD运算机制

  3. 怎么为android控件边缘添加阴影

    为控件设置一个有阴影感的背景图片即可,可以使用shape 在自定义shape中增加一层或多层,并错开,即可显示阴影效果.为增加立体感,按钮按下的时候,只设置一层.我们可以通过top, bottom, ...

  4. Murano Weekly Meeting 2015.10.20

    Meeting time: 2015.October.20th 1:00~2:00 Chairperson:  Serg Melikyan, PTL from Mirantis Meeting sum ...

  5. jQuery源代码学习笔记_01

    如何获取jQuery源代码 1.可以从GitHub上下载到没有合并和压缩的源代码 2.如果要查看兼容IE6-8的版本,请选择1.x-master分支 3.可以使用git clone也可以使用downl ...

  6. 用Windows Live Writer离线写博客

    作为CSDN博客的菜鸟,我发现在线写博客很不方便,而且文字编辑也不方便,比如不能傻瓜化地修改字体和颜色."有志者自有千方百计,无志者只感千难万难."一番搜索后,我发现了Window ...

  7. SUN巡检命令

    # hostname (主机名)# hostid# uname -X# uname -a # w (进程)# who# last# ps -eaf# /usr/ucb/ps -aux# prstat ...

  8. pat1040. Longest Symmetric String (25)

    1040. Longest Symmetric String (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, ...

  9. 在C#.net中如何操作XML

    在C#.net中如何操作XML 需要添加的命名空间: using System.Xml; 定义几个公共对象: XmlDocument xmldoc ; XmlNode xmlnode ; XmlEle ...

  10. hql基础入门

    [转]进入HQL世界 一个ORM框架是建立在面向对象的基础上的.最好的例子是Hibernate如何提供类SQL查询.虽然HQL的语法类似于SQL,但实际上它的查询目标是对象.HQL拥有面向对象语言的所 ...