首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >mysql 数据导入与导出

mysql 数据导入与导出

作者头像
用户1560186
发布于 2019-12-18 08:53:32
发布于 2019-12-18 08:53:32
5.5K00
代码可运行
举报
文章被收录于专栏:运维录运维录
运行总次数:0
代码可运行

开始之前

在日常的运维工作中除了频繁操作基本的SQL语句外,还有另外一种场景,就是数据的导出与导入操作。

举个栗子: 例如逻辑备份需要使用mysqldump导出数据进行逻辑备份数据,或者需要将测试环境的某个表导出、处理后在生产环境使用mysql命令导入数据等。

环境描述

1. MySql 版本 5.7.20

2. 数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+

3个库,其中 test库是我们自己创建的。其余的两个库是 mysql服务器自有的系统库

3. 数据表

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| table1         |
| table2         |
+----------------+

我们在 test库,创建了2个table

导出数据

1. 导出表结构和数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 含有`create``lock``insert`语句,注意选项 `--opt`
# mysqldump --opt 数据库名 -u用户 -p > my-db.sql
mysqldump --opt test -uroot -p > test-full.sql

2. 导出表结构不导出数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 含有 `create table` 语句,注意选项 `-d`
# mysqldump -d 数据库名 -u用户 -p > my-db.sql
mysqldump -d test -u root -p > test-table.sql

3. 导出数据不导出表结构

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 含有 `lock``insert`语句,注意选项 `-t`
# mysqldump -t 数据库名 -u用户 -p > my-db.sql
mysqldump -t test -u root -p > test-data.sql

4. 导出单个表(结构和数据)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 与上述示例不同,仅导出数据库中的某个表,而不是库中所有表
# mysqldump --opt 数据库名 表名 -u用户 -p > table.sql
mysqldump --opt test table1 -uroot -p > table-single.sql

5. 导出所有库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 导出全部的数据,包括mysql自身的系统库
# mysqldump --opt --all-databases -u用户 -p > all.sql
mysqldump --opt --all-databases -uroot -p > all.sql

6. 导出并压缩数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 使用管道组合 mysqldump 与 gzip 命令
mysqldump --opt test -uroot -pPasswd | gzip > table-full.gz

# 文件类型
file table-full.gz
table-full.gz: gzip compressed data, # 省略...
导入数据

1. 导入SQL数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# mysql -h Server_IP -u用户 -p 数据库名 < my-db.sql
mysql -h 8.8.8.8 -uroot -p test < table-full.sql

注意: mysqldump 命令使用--opt选项导出的数据默认包含DROP TABLE语句,例如 "DROP TABLE IF EXISTS table1;" 。

这种情况下请在导入数据前做好数据备份工作,或者根据实际需求删除DROP TABLE语句。

2. 导入压缩数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 没有 -h 选项,表示服务器为 localhost
gzip -dc table-full.gz | mysql -uroot -p test
命令帮助
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysqldump --help
mysqldump  Ver 10.13 Distrib 5.7.27, for Linux (x86_64)

# 省略...
Dumping structure and contents of MySQL databases and tables.
Usage: mysqldump [OPTIONS] database [tables]
OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR     mysqldump [OPTIONS] --all-databases [OPTIONS]

# 省略...
-h, --host=name
    Connect to host.

-u, --user=name    
    User for login if not current user.

-p, --password[=name]

-d, --no-data
    No row information.

-t, --no-create-info 
    Don't write table creation info.

-A, --all-databases 
    Dump all the databases.
    This will be same as --databases with all databases selected.

--opt Same as --add-drop-table, --add-locks, --create-options,
    --quick, --extended-insert, --lock-tables, --set-charset,
    and --disable-keys. Enabled by default, disable with -skip-opt.
    
-R, --routines
Dump stored routines (functions and procedures).
小结

最后来总结下文章中的知识点

  • mysqldump 与 mysql 两个命令日常工作使用频繁,建议掌握使用方法。
  • mysqldump 导出数据如果很大,可以使用shll管道与gzip命令压缩。
  • 慎用--all-databases选项备份全部数据库,建议独立备份每个库。
  • 对于含有储过程和函数、触发器,还要加上--routines 选项。

http://zongming.net/read-536

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
排障集锦:九九八十一难之第四难! yum下载软件发现已存在的 RPM 数据库问题,无法下载,
一、发现 1 个已存在的 RPM 数据库问题, ‘yum check’ 输出如下 现象如下 [root@client yum.repos.d]# yum -y install httpd 已加载插件:fastestmirror, langpacks Determining fastest mirrors 正在解决依赖关系 There are unfinished transactions remaining. You might consider running yum-complete-transacti
不吃小白菜
2020/09/03
2.9K0
linux学习第二十一篇:安装软件包的三种方法,rpm,yum工具用法,yum搭建本地仓库
若想安装一个包,忘记包的名字,但是记得命令,可以根据命令去搜:yum provides “/*/pvcreate” 安装软件包的三种方法 rpm工具(安装路径和文件名基本上都是固定好的。) yum工具(属于用python开发的工具,实际上操作的对象也是rpm包,比rpm工具有一个优势,支持自动安装依赖的包。最简单的) 源码包(源代码,需要通过编译器把源码包编译成可执行文件。最难的) rpm包介绍 把光盘连接上虚拟机 mount /dev/cdrom /mnt 把光盘挂载到目录/mnt下 [root@xie-
用户1215343
2018/02/05
8730
linux学习第二十一篇:安装软件包的三种方法,rpm,yum工具用法,yum搭建本地仓库
centOS7安装MySQL流程介绍
1、隐藏密码 如:MySQL 连接远程数据库(192.168.5.116),端口“3306”,用户名为“root”,密码“123456”(这是我乱写的地址哈) C:/>mysql -h 192.168.5.116 -u root -p Enter password:
麦克劳林
2018/09/11
9170
centOS7安装MySQL流程介绍
kubeadm 安装 k8s 集群(版本自选)
互联网早期,企业将服务直接部署在物理机上;后来由于一系列变化,经历了虚拟化部署,开始了 容器部署之路,Docker 无疑是其中的佼佼者。
看、未来
2022/08/11
8861
kubeadm 安装 k8s 集群(版本自选)
Linux下安装mysql-8.0.21
下面记录了我在Linux(Centos 7)环境下安装Mysql的完整过程,实操记录,绝非水文,如有错误或遗漏,欢迎指正。
全栈程序员站长
2022/08/25
6090
Linux下安装mysql-8.0.21
MySQL的rpm和源码两种安装操作
相比于传统行业,互联网浪潮中MySQL一直是数据库的主力军,无论是曾经的SUN,还是现在的Oracle,虽然可能商业策略不同,但发展方向还是平稳向前的,因此说自己不会MySQL,还真有些不好意思了。
bisal
2019/01/29
1.5K0
Docker入门之安装Docker
本文操作基于CentOS7,其它Linux发行版本可能存在差异,分基于yum的在线安装和基于二进制包的离线安装(实际还有基于rpm包的离线安装),离线安装可以更多地了解Docker及相关体系。
一见
2020/01/15
2.4K0
Linux学习笔记(九)软件包管理
包管理器是方便软件安装、卸载,解决软件依赖关系的重要工具,在不同发行版本的Linux系统中,有着不同的软件包管理器:
小雨coding
2020/06/16
1.8K0
Linux学习笔记(九)软件包管理
Linux基础之软件包管理 原
压缩文件或打包文件常见的扩展名:*.tar、*.tar.gz、*.gz、*.bz2 、*.tar.bz2、*.Z(仅做知识扩展);linux系统一般文件的扩展名用途不大,但是压缩或打包文件的扩展名是必须的,因为linux支持的压缩命令较多,不同的压缩技术使用的压缩算法区别较大,根据扩展名能够使用对应的解压算法。
云飞扬
2019/03/13
1.9K0
Linux基础之软件包管理
                                                                            原
Linux安装MySql5.7——在centos7中与MySQL5.7安装的相恨相杀
CentOS7的yum源中默认好像是没有mysql的。为了解决这个问题,我们要先下载mysql的repo源。(注意root用户权限问题)
不愿意做鱼的小鲸鱼
2022/09/26
7180
Linux安装MySql5.7——在centos7中与MySQL5.7安装的相恨相杀
在CentOS7上安装MySQL的心路历程
今天突然心血来潮,想把博客转移到到自己的云服务器上,嗯,想法不错,正好能练练手(后来找到了别的解决方案Hexo,才发现自己有多幼稚,果然是脑子一热,啥事想得出来,但是在这个过程中也学到了一些东西)。CentOS上安装MySQL数据库,linux配mysql,哎哟,不错哦。(→_→在找到别的解决方案后,马上就被我给卸了)。
双面人
2019/04/10
1.7K1
在CentOS7上安装MySQL的心路历程
使用yum快速部署Oracle安装环境(11g)
    基于Linux安装过Oracle的童鞋们都应该清楚,安装Oracle的确是一件比较费时费力的差事,因为仅仅是前期的rpm包,内核参数,创建用户等等这些个步骤都让那些新手不免眼花缭乱,一不留神,就导致最终的安装过程中报错而不得不从头来过。现在基于Oracle Linux,Oracle仅仅需要通过安装oracle-rdbms-server-11gR2-preinstall RPM包即可全部搞定其余未安装的RPM包,解决之间的依赖关系,配置内核参数等等。客官,正在基于Oracle Linux 安装Oralce 11g?那就接着往下看。
Leshami
2018/08/13
3.3K0
CentOS7系统yum方式安装MySQL5.7
参考:https://www.cnblogs.com/bigbrotherer/p/7241845.html#top
别先生
2019/07/10
1.6K0
CentOS7系统yum方式安装MySQL5.7
Cloudera Manager 安装集群遇到的问题及解决
多次安装集群,但每次都不能顺利,都会遇到很多很多的坑,今天就过去踩过的坑简单的总结一下,希望已经踩了的和正在踩的童鞋能够借鉴一下,希望对你们能有所帮助。
星哥玩云
2022/07/24
9250
Cloudera Manager 安装集群遇到的问题及解决
Linux中RPM 和 YUM 包管理详解
在本教程中,学习如何使用 RPM 和 YUM 工具管理 Linux 系统上的包。学习:
shaonbean
2019/05/26
2.9K0
.NET 6 从0到1使用Docker部署至Linux环境
◆ 前言 作为一名.Net菜鸟开发者,平时对Linux接触的并不多,项目部署这一块都是运维小哥顶着,但是作为混迹在云原生项目组的人咱也不能什么都不知道,该掌握的知识还是要懂的,所以借着这次机会,梳理一下项目部署这块的知识点。如果在阅读的过程中发现有什么不合理的地方,还请多多指教! ◆ 环境准备 VS2022 CentOS 7 Docker Desktop .NetCore 6.0 Xshell 7 ◆ .NET Core项目准备 1.首先我们先创建一个空的ASP.NET Core Web应用 项目启
IT大咖说
2022/05/27
2.3K0
.NET 6 从0到1使用Docker部署至Linux环境
centos7下安装mysql5.7(rpm)「建议收藏」
可以选择 RPM Bundle,下载完记得解压 tar -xvf xxx.tar
全栈程序员站长
2022/08/11
1.5K0
centos7下安装mysql5.7(rpm)「建议收藏」
linux基础命令介绍十一:软件包管理
linux中软件包的管理随着系统发行版本的不同而不同,RPM和DPKG为最常见的两类软件包管理工具,分别应用于基于rpm软件包的linux发行版和基于deb软件包的linux发行版。 本文只描述RPM的使用方法,另一种命令不同,但用法类似,就不做介绍了。
用户5030870
2019/04/11
1.3K0
CentOS 5下安装tfs并使用Nginx做访问
[root@localhost ~]# uname -a Linux localhost.localdomain 2.6.18-371.9.1.el5 #1 SMP Tue Jun 10 17:49:56 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux [root@localhost ~]# cat /etc/issue CentOS release 5.10 (Final) Kernel \r on an \m
星哥玩云
2022/07/03
7540
RPM方式安装GreatSQL 8.0.25-16
部署前提:准备一个干净的系统,确认先前没有安装过MySQL、Mariadb等相关服务,造成不必要的冲突。
GreatSQL社区
2022/05/18
5720
推荐阅读
相关推荐
排障集锦:九九八十一难之第四难! yum下载软件发现已存在的 RPM 数据库问题,无法下载,
更多 >
交个朋友
加入[数据] 腾讯云技术交流站
获取数据实战干货 共享技术经验心得
加入数据技术工作实战群
获取实战干货 交流技术经验
加入[数据库] 腾讯云官方技术交流站
数据库问题秒解答 分享实践经验
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档