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

mysql 数据导入与导出

作者头像
用户1560186
发布于 2019-12-18 08:53:32
发布于 2019-12-18 08:53:32
5.4K00
代码可运行
举报
文章被收录于专栏:运维录运维录
运行总次数: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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【linux命令讲解大全】182.常用的Linux命令详解:renice、cksum和lsusb
renice 命令可以修改正在运行的进程的调度优先级。预设是以程序识别码指定程序调整其优先权,您亦可以指定程序群组或用户名称调整优先权等级,并修改所有隶属于该程序群组或用户的程序的优先权。只有系统管理者可以改变其他用户程序的优先权,也仅有系统管理者可以设置负数等级。
全栈若城
2024/03/02
1790
LINUX下 Udev详解[通俗易懂]
如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略。在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev目录下。后来,采用了devfs,一个基于内核的动态设备文件系统,他首次出现在2.3.46 内核中。Mandrake,Gentoo等Linux分发版本采用了这种方式。devfs创建的设备文件是动态的。但是devfs有一些严重的限制,从 2.6.13版本后移走了。目前取代他的便是文本要提到的udev--一个用户空间程序。 目前很多的Linux分发版本采纳了udev的方式,因为它在Linux设备访问,特别是那些对设备有极端需求的站点(比如需要控制上千个硬盘)和热插拔设备(比如USB摄像头和MP3播放器)上解决了几个问题。下面我我们来看看如何管理udev设备。 实际上,对于那些为磁盘,终端设备等准备的标准配置文件而言,你不需要修改什么。但是,你需要了解udev配置来使用新的或者外来设备,如果不修改配置,这些设备可能无法访问,或者说Linux可能会采用不恰当的名字,属组或权限来创建这些设备文件。你可能也想知道如何修改RS-232串口,音频设备等文件的属组或者权限。这点在实际的Linux实施中是会遇到的。 为什么使用udev 在此之前的设备文件管理方法(静态文件和devfs)有几个缺点: * 不确定的设备映射。特别是那些动态设备,比如USB设备,设备文件到实际设备的映射并不可靠和确定。举一个例子:如果你有两个USB打印机。一个可能称为 /dev/usb/lp0,另外一个便是/dev/usb/lp1。但是到底哪个是哪个并不清楚,lp0,lp1和实际的设备没有一一对应的关系,因为他可能因为发现设备的顺序,打印机本身关闭等原因而导致这种映射并不确定。理想的方式应该是:两个打印机应该采用基于他们的序列号或者其他标识信息的唯一设备文件来映射。但是静态文件和devfs都无法做到这点。 *没有足够的主/辅设备号。我们知道,每一个设备文件是有两个8位的数字:一个是主设备号 ,另外一个是辅设备号来分配的。这两个8位的数字加上设备类型(块设备或者字符设备)来唯一标识一个设备。不幸的是,关联这些身边的的数字并不足够。 */dev目录下文件太多。一个系统采用静态设备文件关联的方式,那么这个目录下的文件必然是足够多。而同时你又不知道在你的系统上到底有那些设备文件是激活的。 *命名不够灵活。尽管devfs解决了以前的一些问题,但是它自身又带来了一些问题。其中一个就是命名不够灵活;你别想非常简单的就能修改设备文件的名字。缺省的devfs命令机制本身也很奇怪,他需要修改大量的配置文件和程序。; *内核内存使用,devfs特有的另外一个问题是,作为内核驱动模块,devfs需要消耗大量的内存,特别当系统上有大量的设备时(比如上面我们提到的系统一个上有好几千磁盘时) udev的目标是想解决上面提到的这些问题,他通采用用户空间(user-space)工具来管理/dev/目录树,他和文件系统分开。知道如何改变缺省配置能让你之大如何定制自己的系统,比如创建设备字符连接,改变设备文件属组,权限等。 udev配置文件 主要的udev配置文件是/etc/udev/udev.conf。这个文件通常很短,他可能只是包含几行#开头的注释,然后有几行选项:
全栈程序员站长
2022/08/02
12.9K0
LINUX下 Udev详解[通俗易懂]
Linux清除U盘(USB)使用记录
[root@node1 ~]# dmesg|grep usb [ 0.211798] usbcore: registered new interface driver usbfs [ 0.211801] usbcore: registered new interface driver hub [ 0.211812] usbcore: registered new device driver usb [ 0.513302] usb usb1: New USB device fo
程裕强
2022/05/06
11.1K0
udev实现热插拔
一、UDEV是什么? Udev是一个针对Linux内核2.6的可提供自动创建的设备节点和命名的解决方法的一个文件系统;其实与/etc/目录下的fstab文件类似 二、Udev如何获取内核这些模块的变化信息? 参考博客:http://blog.chinaunix.net/uid-24943863-id-3223000.html 设备节点的创建,是通过sysfs接口分析dev文件取得设备节点号,这个很显而易见。那么udevd是通过什么机制来得知内核里模块的变化情况,如何得知设备的插入移除情况呢?当然是通过hot
233333
2018/03/07
3K0
ubuntu打开usb摄像头
1、保持在 ubuntu 界面,插上 usb 摄像头,将 usb 摄像头连接到虚拟机上。
Gnep@97
2023/08/10
2.4K0
ubuntu打开usb摄像头
Linux驱动开发: 使用usbmon抓取usb 总线上通信的数据
usbmon 即 usb monitor,是 linux 内置的 usb 抓包工具。
DS小龙哥
2022/01/17
8.7K0
Linux驱动开发:  使用usbmon抓取usb 总线上通信的数据
9个Linux 常用查看系统硬件信息命令(实例详解)
在Linux下,我们经常需要查看系统的硬件信息, 这里我罗列了查看系统硬件信息的实用命令,并做了分类,实例解说。
网络工程师笔记
2021/05/17
5.4K0
9个Linux 常用查看系统硬件信息命令(实例详解)
udev高效、动态地管理 Linux 设备文件
描述: Linux 用户常常会很难鉴别同一类型的设备名,比如 eth0, eth1, sda, sdb 等等。通过观察这些设备的内核设备名称,用户通常能知道这些是什么类型的设备,但是不知道哪一个设备是他们想要的
全栈工程师修炼指南
2022/09/28
8.3K0
udev高效、动态地管理 Linux 设备文件
ubuntu16.04下配置android调试工具adb
ADB:ADB的全称为Android Debug Bridge,即调试桥,方便调试设备或调试开发的Android APP。ADB是android sdk里的一个工具, 用这个工具可以直接操作管理android模拟器或者真实的android设备。
李小白是一只喵
2020/04/24
1.8K0
libvirt-usb设备透传给虚拟机
在虚拟化实践过程中把物理机上的usb设备透传给虚拟机直接使用时很常见的应用场景,尤其时一些usb加密key的的透传使用,本文简单介绍一下usb设备透传的方式。
虚拟化云计算
2018/04/08
3.7K0
libvirt-usb设备透传给虚拟机
19.Linux-USB总线驱动分析
本文总结了USB总线驱动程序的实现原理和流程。首先介绍了USB总线驱动程序的基本概念和作用,然后详细阐述了USB总线驱动程序的实现流程,包括设备加载、设备初始化、设备配置、设备接口、端点、读写请求、中断和轮询机制。最后对USB总线驱动程序中涉及到的几个重要概念进行了详细说明。通过本文的总结,可以更好地理解USB总线驱动程序的实现原理和流程,为后续的USB驱动开发打下坚实的基础。
诺谦
2018/01/03
9.5K0
19.Linux-USB总线驱动分析
【Linux】《how linux work》第三章 设备
This chapter is a basic tour of the kernel-provided device infrastructure in a functioning Linux system.
阿东
2024/03/22
3680
【Linux】《how linux work》第三章 设备
linux下10条查看系统和硬件信息的命
如果只想知道系统的名称,可以使用uname命令,而无需打印系统的相关的信息.或者使用uname -s命令将打印系统的内核名称.
小柒吃地瓜
2020/04/22
3.3K0
Android4.0 声卡配置-高通msm8916移植
一个正常的UAC设备插入Android 7.0是默认打开UAC配置的,打印的log如下: [ 2367.490491] usb 3-3.2: new full-speed USB device number 9 using xhci_hcd [ 2367.580010] usb 3-3.2: New USB device found, idVendor=0d8c, idProduct=0132 [ 2367.580018] usb 3-3.2: New USB device strings: Mfr=1,
233333
2018/03/07
2.5K0
Android4.0 声卡配置-高通msm8916移植
lsusb命令在系统中显示有关USB设备信息
在 中我们使用lsusb 列出USB设备及其属性,lsusb用于显示系统中的USB总线及其连接的设备信息。下面介绍如何安装并使用。
用户1685462
2021/09/05
2.3K0
KVM虚拟化之设备透传
会看到类似下面的输出,其中包含显卡的 PCI 地址,例如 0000:03:00.0:
没有故事的陈师傅
2024/12/27
2670
KVM虚拟化之设备透传
第4章_USB 设备编程
USB 本身是一个很庞大、复杂的体系, 本课程的重点在于工业互联, USB 是其中的一个 小小知识点。本章课程的目的在于:能理解 USB 的一些概念,能使用 USB 传输数据。 4.2~4.5 节, 介绍 USB 概念;4.6~4.7 节,移植 USBX 实现 USB 串口功能。
韦东山
2024/06/29
4720
第4章_USB 设备编程
Linux驱动开发: USB驱动开发
USB是连接计算机系统与外部设备的一种串口总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人电脑和移动设备等信息通讯产品,USB就是简写,中文叫通用串行总线。最早出现在1995年,伴随着奔腾机发展而来。自微软在Windows 98中加入对USB接口的支持后,USB接口才推广开来,USB设备也日渐增多,如数码相机、摄像头、扫描仪、游戏杆、打印机、键盘、鼠标等等,其中应用最广的就是摄像头和U盘了。
DS小龙哥
2022/01/12
73.1K0
Linux驱动开发: USB驱动开发
原创 Paper | USB设备开发:从入门到实践指南(一)
在使用 Google 搜索相关学习资料的过程中,搜到一本书——《圈圈教你玩 USB》,在阅读中发现需要购买相关硬件设备。
Seebug漏洞平台
2024/03/04
2.4K0
原创 Paper | USB设备开发:从入门到实践指南(一)
Ubuntu16.04下用luvcview对摄像头功能调试
今天从老师那got了个摄像头和lucview的源码包,随后的几天里将用这个工具对摄像头进行调试,希望能够在PC上调通(各种功能,如自动白平衡、gamma矫正,自动曝光,增益等),以便后续移植到板子上。。
云深无际
2021/04/14
1.7K0
Ubuntu16.04下用luvcview对摄像头功能调试
相关推荐
【linux命令讲解大全】182.常用的Linux命令详解:renice、cksum和lsusb
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档