当前位置: 首页 > news >正文

同一个数据库服务器进行数据表间的数据迁移-MySQL

同一个数据库服务器进行数据表间的数据迁移

一、相同结构的表数据迁移/备份/导入到同一MySQL的某个库的某张表

实验目标:将t1.table_one的数据备份到migration_one.table_11(提醒:这两个表结构一致)

同一个MySQL中有很多库:

SHOW DATABASES;

得到:

Database            
--------------------
improvement         
information_schema  
migration_one       
mysql               
performance_schema  
sys                 
t1                  

创建数据库migration_one里的table_11表:

CREATE TABLE `table_11` (                                                                                                                             `id` VARCHAR(200) NOT NULL,                                                                                                                          `name` VARCHAR(10) DEFAULT NULL,                                                                                                                     PRIMARY KEY (`id`)                                                                                                                                   ) ENGINE=INNODB DEFAULT CHARSET=utf8  

创建t1库的table_one语句和migration_one.table_11就除了表名不同其他一样。

于是这两张表结果完全一致

目前t1已存在数据:

SELECT * FROM t1.`table_one`;
id           name       
-----------  -----------hahahahah  
23t61832     xinqi2     
62361732198  xinqi      

目前查看下migration_one.table_11

SELECT COUNT(*) FROM migration_one.`table_11`;

得到:

count(*)  
----------0

所以没有数据,另外这个表也是刚刚创建的,啥也没有。

t1.table_one的数据迁移(也可以说是备份)到migration_one.table_11里面,于是:

执行:

INSERT INTO migration_one.`table_11` SELECT * FROM t1.`table_one`;
共 3 行受到影响执行耗时   : 0.039 sec
传送时间   : 0.001 sec
总耗时      : 0.041 sec

查看migration_one.table_11表:

SELECT * FROM migration_one.`table_11`;

得到:

-- 1个结果:
id           name       
-----------  -----------hahahahah  
23t61832     xinqi2     
62361732198  xinqi      
-- 3条信息
返回了 3 行执行耗时   : 0 sec
传送时间   : 0 sec
总耗时      : 0 sec

二、清空数据表

如果想要清空migration_one.table_11应该怎么样清空才效率高?

这里分很多种情况的比如deletetruncatedrop那么哪种最好呢?其实需要基于不同的场景、要求来选择。

方式1-TRUNCATE

原理可自行探索,如果有误的地方敬请指正。

如果该表以后还会被用到,但是里面的数据不想要了,想将表结构保留以便以后可以插入数据,那么可以考虑TRUNCATE

TRUNCATE migration_one.`table_11`;

结果:

共 0 行受到影响执行耗时   : 0.097 sec
传送时间   : 0.003 sec
总耗时      : 0.001 sec

查询:

SELECT * FROM migration_one.`table_11`;

结果:

id      name    
------  --------

三、部分字段相同的表之间的数据迁移

SHOW CREATE TABLE t1.`table1`;

得到t1.table1的建表语句:

CREATE TABLE `table1` (                                                                                                                                                                                                                                     `id` varchar(60) NOT NULL,                                                                                                                                                                                                                                `string1` varchar(20) DEFAULT NULL,                                                                                                                                                                                                                       `string2` varchar(20) DEFAULT NULL,                                                                                                                                                                                                                       `flag1` varchar(10) NOT NULL,                                                                                                                                                                                                                             `flag2` varchar(10) NOT NULL,                                                                                                                                                                                                                             PRIMARY KEY (`id`)                                                                                                                                                                                                                                        ) ENGINE=InnoDB DEFAULT CHARSET=utf8

发现t1.table1的表结构基本和migration_one.table_11的一致。

但是想要将t1.table1的某些字段的数据迁移到migration_one.table_11里面,那么怎么迁移呢?

假如说t1.table1string1id的数据想要分别迁移到migration_one.table_11nameid列里面:

迁移前先看下当前的环境:

SELECT * FROM t1.`table1`;-- result:
id      string1  string2  flag1   flag2   
------  -------  -------  ------  --------
12321   hehe     haha     CJB_A   CJB_A   
SELECT * FROM migration_one.`table_11`;
-- result 
id      name    
------  ---------- 3条信息
返回了 0 行执行耗时   : 0 sec
传送时间   : 0 sec
总耗时      : 0 sec

接下来就进行迁移吧:

INSERT INTO migration_one.`table_11`(id,`name`) SELECT `id`,`string1` FROM t1.`table1`;

1条信息:

共 1 行受到影响执行耗时   : 0.039 sec
传送时间   : 0 sec
总耗时      : 0.039 sec

验证:

SELECT * FROM migration_one.`table_11`;

执行结果:

-- 1个结果:
id      name    
------  --------
12321   hehe    -- 3条信息
返回了 1 行执行耗时   : 0 sec
传送时间   : 0 sec
总耗时      : 0 sec

参考:

MySQL数据库(表)的导入导出(备份和还原) mysql 根据一张表数据更新另一张表-腾讯云开发者社区-腾讯云 (tencent.com)

http://www.lryc.cn/news/217403.html

相关文章:

  • 适用于 Linux 的 WPF:Avalonia
  • 【教3妹学编程-算法题】数组中两个数的最大异或值
  • STM32-RTC实时时钟
  • 初学Flutter,实现底部导航切换
  • 使用JMeter进行接口压力测试
  • ElasticSearch集群架构实战及其原理剖析
  • 选择适合你的办公桌:提高工作效率的关键
  • 机器学习之多层感知机 MLP简洁实现 《动手深度学习》实例
  • 使用C#在Windows上调用7-zip压缩文件
  • 京东数据平台:2023年Q3季度黄金市场数据分析
  • https原理
  • FFmpeg直播能力更新计划与新版本发布
  • 面试算法55:二叉搜索树迭代器
  • Linux Crontab 定时任务
  • HiveSQL高级进阶技巧
  • 【Flutter】Flutter 动画深入解析(1):掌握 AnimationController 的使用
  • 安装富文本组件
  • Tomcat下载地址(详细)
  • 领星ERP如何无需API开发轻松连接OA、电商、营销、CRM、用户运营、推广、客服等近千款系统
  • Django实战项目-学习任务系统-自定义URL拦截器
  • [已解决]该主机与 Cloudera Manager Server 失去联系的时间过长。 该主机未与 Host Monitor 建立联系。
  • 通过在Z平面放置零极点的来设计数字滤波器
  • linux环境docker部署nginx对生产日志按日切割并压缩处理
  • 【Spring Boot】发送邮件功能
  • ELK问题整理
  • 《黑客帝国:破解编程密码》——探索编程世界的奥秘
  • 【优选算法系列】【专题六模拟】第一节.1576. 替换所有的问号和495. 提莫攻击
  • 路由器基础(十二):IPSEC VPN配置
  • Python 获取cpu、内存利用率
  • Apache ECharts简介和相关操作