数据迁移的几种方式 - MySQL数据库

article/2025/9/25 17:08:36

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上的你有所助益。同时,博主也想通过此次尝试打造一个完善的技术图书馆,任何与文章技术点有关的异常、错误、注意事项均会在末尾列出,欢迎大家通过各种方式提供素材。

  • 对于文章中出现的任何错误请大家批评指出,一定及时修改。
  • 有任何想要讨论和学习的问题可联系我:zhuyc@vip.163.com。
  • 发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。

数据迁移的几种方式 - MySQL数据库

本文关键字:MySQL、数据库、数据迁移、导入、导出

文章目录

  • 数据迁移的几种方式 - MySQL数据库
    • 一、数据迁移
      • 1. 数据的生命周期
      • 2. 数据迁移的发生
    • 二、数据导出
      • 1. 命令方式
      • 2. 软件方式
    • 三、数据导入
      • 1. 命令方式
      • 2. 软件方式
    • 四、数据传输与数据同步
      • 1. 数据传输
      • 2. 数据同步

开始和数据库玩耍以后,我们将一直与SQL和数据打交道。在日常的操作中,我们只需要对指定的数据库进行操作,执行增删改查,权限管理等。但有些时候由于项目的升级,或者服务器的更换,我们要将数据从一个地方转移到另一个地方,准确的说是从一个数据库服务转移到另一个数据库服务中,因为我们还要继续使用这些数据。

一、数据迁移

数据迁移的操作在应用运行或数据使用过程中十分常见,这里为了让大家对数据有一个更完善的认识,先给大家科普一下数据的生命周期。

1. 数据的生命周期

在数据使用的过程中,同样有一个生命周期的贯穿其中:

  • 创建:创建是数据的起点,对应业务中的逻辑,如:用户注册、开卡、登记等,此时数据从客观世界流入到数据库。
  • 存储:存储是数据生存的过程,按照需要被管理,在复杂系统中会有严格的访问权限控制。
  • 使用:使用是数据存在的意义,会在保障数据安全的情况下进行数据的变更与查询。
  • 共享:在数据的使用过程中,经常会涉及到数据的共享,用于打通各平台或子系统,合理的共享数据有利于更好的支持和发展业务。
  • 归档:一旦数据归档,意味着数据的使用频次将明显下降,归档数据的存储位置一般是适合长久保存的介质,有需要也会进行加密处理。
  • 销毁:数据销毁代表数据生命周期的结束,会将数据完全删除,但在大数据时代下,数据即财富,通常只会进行归档操作。

2. 数据迁移的发生

引述维基百科中对数据迁移的解释,可以说比较亲民也很全面了:

数据迁移(data migration)是指选择、准备、提取和转换数据,并将数据从一个计算机存储系统永久地传输到另一个计算机存储系统的过程。此外,验证迁移数据的完整性和退役原来旧的数据存储,也被认为是整个数据迁移过程的一部分。
数据迁移是任何系统实现、升级或集成的关键考虑因素,通常以尽可能自动化的方式执行,从而将人力资源从繁琐的任务中解放出来。数据迁移有多种原因,包括服务器或存储设备更换、维护或升级、应用程序迁移、网站集成、灾难恢复和数据中心迁移。

如果按照数据的流向来分类,可以将数据迁移分为数据导出和数据导入两种操作,这种方式通常会存在一个中间文件,有可能是sql格式的文件,也有可能是各种格式的数据文件。将这些文件保存在磁盘上,需要时再导入到另外的数据库中,这种方式虽然会生成文件,但是可以随时进行数据的恢复。另外一种方式是在原数据库服务与目标数据库服务均开启的情况下,直接进行数据的传输。
由于数据文件的格式多种多样,数据迁移的方式也是多种多样,所以本文只介绍常用的转储SQL运行SQL数据传输数据同步

二、数据导出

SQL作为通用的数据库语言,可以将数据库中存在的结构和数据转换为完整的SQL语句,包含建表语句以及数据插入语句,并且会根据表间关系自动生成顺序合理的SQL。通常情况下,如果我们以导出数据文件的方式进行数据的迁移,SQL格式将成为首选,甚至可以跨库进行(由于SQL语法通用,经过处理后可以在不同的DBMS之间迁移数据)。

1. 命令方式

  • 单表数据导出

如果使用单表数据导出,需要提前已经配置了secure-file-priv选项,来指定一个导出目录,如果未配置则无法导出,导出时会生成一个新的文件。

如果是第一次配置,配置完成后需要重启MySQL服务。(如果是Windows系统,请使用Windows路径写法)

SELECT * FROM `表名` INTO OUTFILE '文件路径';

在这里插入图片描述
单表数据的导出会以数据文件的形式存在,每条数据单独成行,每列数据以分隔符隔开,可以用记事本直接打开,在进行数据导入的时候也可以直接使用。

同时,我们也可以使用mysqldump工具直接导出为SQL文件,这其实是个备份工具,支持数据表及数据库的导出操作。

mysqldump -u 用户名 -p 数据库名 数据表名 > '文件路径'


会生成建表语句及数据插入语句。

  • 数据库转储
mysqldump -u 用户名 -p 数据库名 > '文件路径' 


会自动生成数据库中所有表的建表语句以及数据插入语句。
在这里插入图片描述

2. 软件方式

没有使用过Navicat工具的小伙伴可以查看这篇文章,插看基本操作:MySQL数据库界面化工具 - Navicat的常用功能

  • 单表数据导出

使用界面化工具来进行数据导出十分简单,以Navicat为例。选择某一个数据表,右键点击:导出向导

根据需要选择对应的数据文件格式:



在这里插入图片描述

通过这种方式导出的sql文件只包含数据,并不包含表结构,如下:

  • 数据库转储

打开数据库连接后,选择要导出的数据库,右键:转储SQL -> 结构+数据 -> 选择路径

三、数据导入

准备好数据文件或SQL文件后,就可以开始进行数据导入的操作,如果SQL文件中不包含建表语句,则需要先建立表结构,保证字段名称、字段类型(长度)、约束条件等于数据兼容。

1. 命令方式

  • 单表数据导入

对于导出得到的数据文件,需要使用LOAD DATA INFILE语句来插入数据:

load data local infile '文件路径' into table 表名;


导入完成后会显示执行状态,如果表中存在主键约束或唯一性约束,则相同的数据会被跳过。

  • SQL导入

如果在进行数据导出时,直接生成了可执行的SQL文件,则可以使用source命令执行该文件,这种方式同时适用与单表数据导入与整个数据库导入。

source 文件路径;


加载sql文件后会显示每条SQL语句的执行结果,其中Query OK代表成功,rows affected代表当前语句对数据库的影响行数(0 rows affected对应建表语句和各种指令,只要显示Query OK就证明执行成功)。

2. 软件方式

  • 单表数据导入

选择需要导入数据的数据表,右键:导入向导








根据需要选择导入模式,最后点击开始即可。

  • SQL导入

如果根据已有的SQL文件执行数据导入,可以直接在打开一个数据库后,新建一个查询窗口,然后将sql文件中的内容粘贴到窗口中执行就好了,这种方式同时适用于单表数据导入与数据库整体导入。
除此之外,如果我们想要进行整个数据库的数据导入,也可以直接右键数据库:运行SQL

四、数据传输与数据同步

1. 数据传输

使用数据传输功能的效果与通过SQL语句进行数据导入类似,一般都会先删除已存在的相同的表,这一点一定要注意,使得最终结果与数据源相同,完成完整的数据迁移。
点击工具菜单中的数据传输开始使用:




2. 数据同步

数据同步的操作步骤与数据传输类似,同样需要先指定数据源与目标数据库,区别在于数据同步会先比较两个数据库的差异,用户可以自行决定是否进行同步,主要适用于有相同表结构的数据库以及主从分布等场景。




扫描下方二维码,加入官方粉丝微信群,可以与我直接交流,还有更多福利哦~

在这里插入图片描述


http://chatgpt.dhexx.cn/article/YTGtHZpD.shtml

相关文章

mysql数据库数据迁移操作

1.新建一个需要迁移的数据库 2.进行数据迁移 迁移步骤: 1.工具-->点击 数据传输 ,选择需要被导的数据库,和导入的数据库 看到了吗以及导入成功了

mysql迁移数据库

mysql迁移数据库我通常用2种方法。1、用sql文件把机器A中数据库的表结构和数据等等导出,然后导入到机器B中对应数据库中。2、直接将机器A中mysql 目录下的data数据文件拷贝到机器B中MySQL对应目录。下面分别介绍这2种mysql迁移数据库方式 1、用sql文件把A服务器数据…

MySQL的数据迁移

一、前言 数据库的数据迁移是我们经常遇到的问题,如因磁盘空间不够、业务出现瓶颈、项目改造等原因。 二、MySQL数据迁移常用的方法 1、使用第三方迁移工具。 2、数据文件和库表结构直接拷贝到新服务器,挂载到同样配置的MySQL服务下。 3、数据库直接导…

你觉得做程序员期间最开心的是什么?

不管是新入行的程序员还是工作多年的程序员,都会想一个问题,在这份工作中最开心的事情是什么呢?是无bug还是工作中发生的其他一些事情? 今天我们邀请了 3 名淘系技术的工程师,结合他们真实的学习工作经历,给…

限时免费下载《程序员面试宝典》.pd

社会竞争很残酷、面试则是一场表演,企业永远喜欢可以随机应变、聪明的求职者。 程序员的面试不同于一般岗位的面试。 当你在羡慕程序员十几万美金年薪的同时,你却不知道他们在应付面试时,要经历的重重磨难和压力。 程序员面试中,技…

互联网行业职位介绍 —— OD、PM、RD、FE、UE、QA、OP、DBA...

各种职位的简称在百度上一搜一大堆,我也只是根据自己公司的习惯,把常用的总结下来: 1、管理层 CEO – Chief Executive Officer 首席执行官 VP – Vice President 副总裁 HRD – Humen Resource Director 人力资源总监 OD – Operations…

浩鲸科技是外包公司吗_广东电商外包服务公司是什么意思_聚财猫科技

首页 > 新闻中心 发布时间:2020-11-12 02:11:12 导读:聚财猫科技为您提供广东电商外包服务公司是什么意思的相关知识与详情: 这种类型的公司缺乏运营团队的能力和技能。 在与客户的对话中,不强调团队的人数,合作伙…

阿里数据产品经理工作(总结篇):数据PD,做牛做马

送给真正的互联网人一顿干货早餐 【小咖导读】文自 听雨-悟禅 博客,PD(指产品经理,下同)本身就是在做牛做马,关系圈异常复杂。数据PD也不例外。而且打交道的人更多。以下是作者用PPT绘制的数据产品经理关系圈。 科普&a…

DevOps笔记-05:IT行业中BA、SM、PO、PM、PD、Dev、Ops、QA都是什么角色

1、BA (1)定义 BA是Business Analys缩写,即业务需求分析师。在互联网公司里,BA的角色就是产品经(PM),只是BA要承接某个很具体的业务或者领域,比如银行也有自己的IT部门,银行IT里的产…

Java空指针异常:NullPointerException

Java空指针异常(NullPointerException):空指针异常属于运行时异常(RuntimeException),即:编译会通过,但运行时会报异常。当你调用某个实例对象的方法时,如果该实例对象是…

什么是空指针异常

日常开发过程中,最常见的异常莫过于NullPointerException,之前的时候,只是知道去找到报错的位置,然后去解决它,最近有空学习C语言,就去深究了下NullPointerException异常的本质。 发生NullPointerExceptio…

空指针异常的原因分析

空指针异常的原因分析: 1.当一个对象不存在时又调用其方法会产生异常obj.method() // obj对象不存在 2. 调用空对象的方法时就会抛出 NullPointerException 空指针异常 (对象自己new 或是spring管理的要加Autowired注解) 3.如果该对象是由spring容器进行依赖注入(DI…

如何有效的避免空指针异常

空指针异常如何避免,听听老司机分享一些条件反射式的使用经验。 | 喜欢听我叨叨的,直接看视频 | 01 开篇 空指针异常在新手程序员里面非常常见,不只是新手,所有初级、中级甚至是高级都不可避免。 本期主题的由来是因为有这样一位…

关于Integer的空指针异常

关于Integer的空指针异常 问题来源 当用Integer来接收数据后,需要将数据与0进行比较,看是不是0,但是如果Integer接收的数据是null的时候,就会报空指针异常。 public static void main(String[] args) {Integer a null;System.…

如何解决空指针异常

NPE异常相信 Java 程序员都很熟悉,是 NullPointerException 的缩写;最近业务需求开发的有点着急,测试环境就时不时的来个NPE异常,特别的头疼;作为出镜率最高的异常之一,一旦入行Java开发,可以说…

Java 空指针异常的若干解决方案

Java 中任何对象都有可能为空,当我们调用空对象的方法时就会抛出 NullPointerException 空指针异常,这是一种非常常见的错误类型。我们可以使用若干种方法来避免产生这类异常,使得我们的代码更为健壮。本文将列举这些解决方案,包括…

NullPointerException(空指针异常)

NullPointerException(空指针异常)对象为Null还拿来使用,就会出现此异常。 多的不说少的不聊,直接上代码!!! public class Main {public static void main(String[] args) {String str1 "";String str2 n…

Java中的空指针异常

Java中的空指针异常 一、什么是空指针异常? 1.1 异常的分类 NullPointerException是RuntimeException的一个子类,这是运行时异常,在编译时期不会触发。 1.2 空指针异常引入 Java是没有指针的,所以我们常说"Java 指针&quo…

PageRank算法介绍

互联网上有数百亿个网页,可以分为这么几类:不含有用信息的,比如垃圾邮件;少数人比较感兴趣的,但范围不是很广的,比如个人博客、婚礼公告或家庭像册;很多人感兴趣的并且十分有用的,比…

PageRank 算法(从原理到实现)

spark 系列 Spark 核心原理及运行架构 Spark RDD详解 Spark 常用算子大全 Spark SQL 详解 Spark GraphX 图计算入门基础 Spark PageRank 算法——从原理到实现 Spark PageRank spark 系列前言算法来源算法原理排名泄露排名下沉排名上升算法证明 PR值计算方法幂迭代法特征…