直接粘贴代码

注意: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. ubuntu replace system openjdk

    一些ubuntu自带jdk的.但是有时候会确实我们所要的文件.下面介绍如何replace jdk 1. 卸载现有jdk sudo apt-get purge openjdk-\* 2. 下载jdk. ...

  2. SpringMVC什么时候配置 视图解析器

    当Action返回的是一个真实路径的时候,视图解析器可不进行配置 当Action返回的是逻辑路径的时候,我们必须要在配置文件中注册视图解析器并为该逻辑路径添加前缀和后缀

  3. DOM, DOCUMENT, BOM, WINDOW 有什么区别?

    DOM: DOM 全称是 Document Object Model,也就是文档对象模型. DOM 就是针对 HTML 和 XML 提供的一个API.什么意思?就是说为了能以编程的方法操作这个 HTM ...

  4. HBase 的Get(读),Put(写),Delete(删),Scan(扫描)和Increment(列值递增)

    一.HBase介绍 1.基本概念 HBase是一种Hadoop数据库,经常被描述为一种稀疏的,分布式的,持久化的,多维有序映射,它基于行键.列键和时间戳建立索引,是一个可以随机访问的存储和检索数据的平 ...

  5. POJ 1861 ——Network——————【最小瓶颈生成树】

    Network Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 15268   Accepted: 5987   Specia ...

  6. ASP.NET Core后台任务

    之前在控制台程序中学习如何运行后台任务,ASP.NET Core中其实也有同样的方法BackgroundService,本以为跟HostedService没有区别,毕竟BackgroundServic ...

  7. 通用代码——makefile文件

    ver=debug ifeq ($(ver),debug) TARGET = testmain_d FLAG=-g -D debug else TARGET = testmain_r FLAG=-O3 ...

  8. DataColumn.Expression提示“...循环引用”的错误

    我碰到这个问题的时候,在网上找了找,找到了有好几个提出这个问题的人,但是都没有得到解答,当时很郁闷.然后再看看msdn中的解释与自己的测试,才把这个问题给解决了. 代码如下: person.Colum ...

  9. java控制某个字段当天递增

    ①思路 1.获取当前时间年月日 如:2018-01-15 00:00:00 2018-01-15 24:00:00 2.查询表中对应日期字段是否在当天时间段内 3.若是在,则从0开始递增 4.若是不在 ...

  10. 超详细Hexo+Github博客搭建小白教程

    原文链接:超详细Hexo+Github博客搭建小白教程 去年9月的时候开始搭建了第一个自己的独立博客,到现在也稍微像模像样了.很多小伙伴应该也想过搭建一个自己的博客,网上也有一堆详细教程.我在此稍稍总 ...