mysql如何把 一个数据库中的表数据 复制到 另一个数据库中(两个数据库不在同一个数据库链接下)

本文详细介绍了如何从一个数据库的warn_message表中批量复制数据到另一个数据库的同名表中。通过使用Excel处理数据,包括删除特定列、添加引号、处理空值,最终形成CSV文件并用记事本编辑,最后在MySQL客户端工具中执行批量插入语句,成功实现了数据迁移。过程中强调了处理空值和特殊格式的重要性。
摘要由CSDN通过智能技术生成

1.需求:

把 一个数据库连接(如:test)中某个数据库中的某表(如:warn_message)的数据,批量复制到 另一个数据库连接(如:localhost)中某个数据库中的某表(如:warn_message)中

两个warn_message表的数据结构一致

2.实现

mysql 批量添加语句:

  insert into 表名(字段1,字段2,字段3values (字段1的值,字段1的值,字段1的值),(字段1的值,字段1的值,字段1的值)

下面的步骤就是要 组装 values 后面的 值,以达到可以批量复制的效果:

2.1 把待复制的数据 复制粘贴到 excel中

在这里插入图片描述

在这里插入图片描述

2.2 处理excel中的数据

然后根据需求修改excel中的数据,如 删除自增主键id,时间字段等特殊格式的修改的
把excel 组装成 可以批量 添加的参数

①删除id 所在列

②中文内容、时间列 两端 添加 单引号

选中中文所在的列,右键—》设置单元格格式—》选中自定义,选中如下类型,在类型中添加 单引号,点击确定:
在这里插入图片描述
在这里插入图片描述

时间所在列 处理方式相同:

在这里插入图片描述

在这里插入图片描述

③每行的首尾 添加 括号

在这里插入图片描述
在这里插入图片描述

④空值要处理成 null 或者 空的单引号

如果不处理,会报错,见下面。
在这里插入图片描述

⑤文件另存为 *.csv文件

在这里插入图片描述
在弹出的窗口中选择 是:

在这里插入图片描述

⑥以记事本方式 打开上面的 333.csv文件

在这里插入图片描述
在这里插入图片描述

发现记事本中的内容 离 目标 还差点, 多了 双引号!!!
解决方法:全局替换 “”,得到下面的内容:
在这里插入图片描述

2.3 把记事本的内容复制到 mysql 客户端工具,拼接 批量插入语句

在这里插入图片描述

执行报错:说明 空值也要进行处理。 处理成 null 或者空字符串
在这里插入图片描述

处理后的sql语句是:

INSERT INTO `warn_message`(`device_id`, `device_type`, `extend_json`, `install_place_id`, `pound_order_id`, `rational_deviation`, `real_deviation`, `overtime_duration`, `warn_type`, `deal_flag`, `deal_result`, `active_flag`, `created_user`, `created_time`, `updated_user`, `updated_time`, `warning_level`, `organization_id`, `start_time`, `end_time`, `description`, `resolver`, `third_warn_id`, `relation_user_id`) VALUES 
(1842,8,null,102,0,0,0,0,0,1,'系统自动解除预警',1,0,'2021/2/3 11:23',0,'2021/2/3 14:40',3,1047,'2021/2/3 11:23','2021/2/3 14:40',null,null,6534,null),
(1842,8,null,102,0,0,0,0,0,1,'系统自动解除预警',1,0,'2021/2/3 11:43',0,'2021/2/3 14:40',3,1047,'2021/2/3 11:43','2021/2/3 14:40',null,null,6534,null),
(1842,8,null,102,0,0,0,0,0,0,'系统自动解除预警',1,0,'2021/2/3 12:11',0,'2021/2/3 13:56',3,1047,'2021/2/3 12:11','2021/2/3 13:56',null,null,6534,null),
(1842,8,null,102,0,0,0,0,8,1,'系统自动解除预警',1,0,'2021/2/3 13:56',0,'2021/9/30 11:48',3,1047,'2021/2/3 13:56','2021/2/3 14:40','烟火',null,6534,null),
(1842,8,null,102,0,0,0,0,8,1,'系统自动解除预警',1,0,'2021/2/3 13:59',0,'2021/9/30 11:48',3,1047,'2021/2/3 13:59','2021/2/3 14:40','烟火',null,6534,null),
(1842,8,null,102,0,0,0,0,8,1,'系统自动解除预警',1,0,'2021/2/3 14:06',0,'2021/9/30 11:48',3,1047,'2021/2/3 14:06','2021/2/3 14:40','烟火',null,6534,null),
(1842,8,null,102,0,0,0,0,8,1,'系统自动解除预警',1,0,'2021/2/3 14:10',0,'2021/9/30 11:48',3,1047,'2021/2/3 14:10','2021/2/3 14:40','烟火',null,6534,null),
(1842,8,null,102,0,0,0,0,8,0,'系统自动解除预警',1,0,'2021/2/3 14:40',0,'2021/9/30 11:48',3,1047,'2021/2/3 14:40',null,'烟火',null,6534,null)

运行结果如下:
在这里插入图片描述
在这里插入图片描述
批量插入成功!!

2.4 注意点:excel中空值也要处理

excel中的数据 处理需要注意的点:
①中文和时间 都要加 单引号
空值也要处理 处理成 null 或者 空的 单引号

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java数据库数据复制到另一个可以通过以下步骤实现: 1. 连接数据库:使用JDBC连接数据库,获取Connection对象。 2. 创建源和目标:使用CREATE TABLE语句,创建源和目标。 3. 复制数据:使用INSERT INTO SELECT语句,将源数据复制到目标。 下面是一个示例代码: ```java import java.sql.*; public class CopyTableData { public static void main(String[] args) { Connection conn = null; Statement stmt = null; try { // 连接数据库 Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "password"); // 创建源和目标 stmt = conn.createStatement(); stmt.executeUpdate("CREATE TABLE source_table (id INT, name VARCHAR(20))"); stmt.executeUpdate("CREATE TABLE target_table (id INT, name VARCHAR(20))"); // 向源插入数据 stmt.executeUpdate("INSERT INTO source_table VALUES (1, 'John')"); stmt.executeUpdate("INSERT INTO source_table VALUES (2, 'Mary')"); // 复制数据 stmt.executeUpdate("INSERT INTO target_table SELECT * FROM source_table"); System.out.println("Table data copied successfully."); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { // 关闭连接和语句对象 try { if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } } ``` 该示例代码使用JDBC连接MySQL数据库,创建了一个名为source_table的源一个名为target_table的目标,向源插入了两条数据,然后使用INSERT INTO SELECT语句将源数据复制到目标
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值