MySQL数据库,从一个数据库中复制指定表到另一个数据库中
程序员文章站
2024-03-21 20:21:16
...
需求:
这几天项目中遇到一个问题,需要将一个mysql数据库中某些表的数据复制到另一个数据库中,这个数据库是不存在的,也需要在代码中动态创建数据库,然后将表直接复制到这个动态创建的数据库中。
网上找了很多资料,有能动态创建一个数据库的简单方式,数据复制过程绕了些湾,不过还好最后都搞定了,其实也很简单,这里记下,方便自己以后使用。
可以将事情分步去完成,第一步:搞定动态创建数据库。第二步:复制表格数据
首先连接到原始数据库,然后利用Statement对象执行创建数据库的语句就OK。然后就调用相应的sql语句进行复制就行,完整核心函数如下:
/**
* 利用创建表的语句和select语句解决数据迁移问题
* @param dataBaseNameSource 源数据库名称
* @param tableNameSource 源数据表名称
* @param dataBaseNameTarget 目标数据库名称
* @param tableNameTarget 目标数据表名称
*/
public static void copyDataFromOneTable2AnotherWithSelectAndCreateSql(String dataBaseNameSource,String tableNameSource,
String dataBaseNameTarget,String tableNameTarget){
conn = null;
Statement statement= null;
try {
conn = getConnection();
statement = conn.createStatement();
//创建数据库
statement.execute("create database "+dataBaseNameTarget);
statement.execute("use "+dataBaseNameTarget);
//创建数据表
statement.execute("create table "+tableNameTarget+" LIKE "+dataBaseNameSource+"."+tableNameSource);
//导入数据
String copySql = "insert "+tableNameTarget +" select * from "+dataBaseNameSource+"."+tableNameSource;
statement.execute(copySql);
} catch (Exception e) {
e.printStackTrace();
}
}
一些公共的方法
/**
* 获取一个连接
* @return
*/
public static Connection getConnection(){
try {
String url = bundle.getString("jdbc.url");
String username = bundle.getString("jdbc.username");
String password = bundle.getString("jdbc.password");
Class.forName(bundle.getString("jdbc.driver"));
Connection conn = DriverManager.getConnection(url,username,password);
return conn;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 释放资源
* @param conn
* @param stmt
* @param rs
*/
public static void release(Connection conn,Statement stmt,ResultSet rs){
if(rs!=null){
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
rs=null;
}
if(stmt!=null){
try {
stmt.close();
} catch (Exception e) {
e.printStackTrace();
}
stmt = null;
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
测试代码
public static void main(String[] args){
System.out.println("---------------开始复制----------------");
long startTime = System.currentTimeMillis();
copyDataFromOneTable2AnotherWithSelectAndCreateSql("shop_T01","user_info","shop_T07","user_info");
long endTime = System.currentTimeMillis();
System.out.println("---------------结束复制----------------");
System.out.println("整个过程耗时:"+(endTime-startTime)+"ms");
}
运行结果:
测试结果:
现在有一个数据库叫shop_t01,里面有一张表user_info,现在需要将这张表复制到一个新建的数据库shop_t07中
上图中可以看出,是没有shop_t07的,需要动态创建,并将user_info复制到该数据库中,执行完main函数之后
上一篇: springBoot整合easyPOI轻松实现Excel文件导出
下一篇: 牛客网机试题-完数和盈数
推荐阅读
-
MySQL数据库,从一个数据库中复制指定表到另一个数据库中
-
【DB】Mysql从一个数据库复制数据到另一个数据库中
-
mysql一个数据库中表(数据)复制到另一个数据库中
-
MySQL数据库,从一个数据库中复制指定表到另一个数据库中,案例
-
mysql-将一个a数据库中的一个表移动到b数据库
-
mysql 两个数据库中表的结构不同,怎么把一个表中的数据导入到另一个表中
-
Oracle中Cursor, A表a1字段值复制到B表b1字段 博客分类: 数据库 oraclecursorsql
-
Oracle 导出的txt数据怎么导入到另一个MySQL数据库中
-
mysql中对已经存在的用户名如何指定仅可以访问某一个或指定多个数据库,别的数据库限制无法访问无法读到
-
mysql 两个数据库中表的结构不同,怎么把一个表中的数据导入到另一个表中