作者:佚名 时间:2024-02-24 12:47:00 阅读:(47)
MySQLdump是MySQL⾃带的导出数据⼯具,通常我们⽤它来导出我们需要的数据,接下来云梦编程为大家介绍一下MYSQL使用mysqldump导出某个表的部分数据,有需要的小伙伴可以参考一下:
mysqldump命令中带有一个 --where/-w 参数,它用来设定数据导出的条件,使用方式和SQL查询命令中中的where基本上相同,有了它,我们就可以从数据库中导出你需要的那部分数据了。
mysqldump -u用户名 -p密码 数据库名 表名 --where="筛选条件" > 导出文件路径
参数 | 缩写 | 是否默认 | 说明 |
---|---|---|---|
--print-defaults
|
- | - | 用于打印默认参数 |
--no-defaults
|
- | - |
禁止从默认配置文件中读取默认参数,mysqldump 默认会从/etc/my.cnf 、/etc/mysql/my.cnf 和~/.my.cnf 默认配置文件中读取 mysqldump 、 mariadb-dump 、 client、 client-server 和client-mariadb 等客户端配置。
|
--defaults-file
|
- | - |
指定mysqldump 默认配置文件,mysqldump 将仅从该文件读取默认配置。
|
--defaults-extra-file
|
- | - |
指定mysqldump 额外的配置文件,mysqldump 将除了从默认配置文件读取配置外,还将从该文件读取。 |
--defaults-group-suffix
|
- | - | 除默认组外,额外读取的组名,多个用逗号分隔。 |
--all-databases
|
-A
|
False
|
备份所有库 |
--all-tablespaces
|
-Y
|
False
|
备份所有表空间 |
--no-tablespaces
|
-y
|
False
|
不备份任何表空间 |
--add-drop-database
|
False
|
在CREATE DATABASE 前添加DROP DATABASE
|
|
--add-drop-table
|
True
|
在CREATE TABLE 前添加DROP TABLE
|
|
--skip-add-drop-table
|
- |
禁用**--add-drop-table **
|
|
--add-drop-trigger
|
False
|
在CREATE TRIGGER 前添加DROP TRIGGER
|
|
--add-locks
|
True
|
在INSERT 语句前添加LOCK TABLES ,语句后添加UNLOCK TABLES;
|
|
--skip-add-locks
|
- |
禁用**--add-locks **
|
|
--allow-keywords
|
False
|
允许创建包含关键字的列名 | |
--apply-slave-statements
|
False
|
在CHANGE MASTER 前添加STOP SLAVE ,备份文件末尾添加START SLAVE
|
|
--character-sets-dir
|
- |
字符集文件目录,用--character-sets-dir=name 指定
|
|
--comments*
|
-i
|
True
|
添加注释信息 |
--skip-comments
|
- |
禁用**--comments* **
|
|
--compatible
|
- |
与其他数据库或不同mysql 版本匹配,需要4.1.0 以上版本;可以设置的值有 ansi , mysql323 , mysql40 , postgresql , oracle ,mssql , db2 , maxdb , no_key_options , no_table_options , no_field_options ;用 --compatible=name 指定,多个用逗号分隔
|
|
--compact
|
False
|
禁用注释和前后的dump 文件信息,提供较少输出,适用于调试;默认启用以下选项: --skip-add-drop-table 、--skip-add-locks 、--skip-comments 、--skip-disable-keys 、--skip-set-charset
|
|
--complete-insert
|
-c
|
False
|
使用带有完整列名的INSERT 语句,默认不带列名
|
--compress
|
-C
|
False
|
在服务端和客户端的协议中使用压缩 |
--create-options
|
-a
|
True
|
包含所有MySQL的特定创建选项 |
--skip-create-options
|
- |
禁用**--create-options **
|
|
--databases
|
-B
|
False
|
备份多个数据库,如果没有使用--tables 选项,后边的值都将被认为是数据库名,多个用逗号分隔; 将会在输出文件中添加 'USE db_name'
|
--debug
|
-#
|
非调试版本 | |
--debug-check
|
False
|
在退出时检查内存和打开文件的使用情况 | |
--debug-info
|
False
|
在退出时打印一些调试信息,包括用户占用CPU 事件,系统占用 CPU 事件,上下文切换等系统信息。
|
|
--default-character-set
|
utf8
|
设置默认字符集,--default-character-set=utf8
|
|
--delayed-insert
|
False
|
使用INSERT DELAYED 而表示INSERT 插入数据,INSERT DELAYED 在空闲时候插入数据,当有如SELECT 等其他操作时候,先处理其他操作,新版本已经不支持了。 |
|
--delete-master-logs
|
False
|
备份后从master 删除日志,该选项会自动启用--masert-data 选项
|
|
--disable-keys
|
-K
|
True
|
INSERT 语句前添加'/*!40000 ALTER TABLE tb_name DISABLE KEYS */; 禁用索引,INSERT 语句后添加'/*!40000 ALTER TABLE tb_name ENABLE KEYS */; 启用索引;因为一次创建索引比逐行创建效率更高,这样可以提高数据恢复效率。 |
--skip-disable-keys
|
禁用**--disable-keys **
|
||
--dump-slave
|
0
|
会将二进制文件位置和主文件名附加到备份文件中, 默认为 0 ,如果为 1 ,将会以CHANGE MASTER 语句方式输出到备份文件;如果为 2 ,CHANGE MASTER 语句将会以注释形式输出到备份文件;除非指定了 --single-transaction ,否则将自动开启全局锁 --lock-all-tables ;该选项会自动关闭 --lock-tables
|
|
--events
|
-E
|
False
|
备份事件 |
--extended-insert
|
-e
|
True
|
使用包含多个值列表的多行插入语法。 |
--skip-extended-insert
|
- |
禁用**--extended-insert **
|
|
--fields-terminated-by
|
- |
结合**-T,--tab=path **选项使用,tb_name.txt 文件中的字段以指定字符串结尾,默认是TAB --fields-terminated-by=name
|
|
--fields-enclosed-by
|
- |
结合**-T,--tab=path **选项使用,tb_name.txt 文件中的字段以指定字符串括起来,默认无--fields-enclosed-by=name
|
|
--fields-optionally-enclosed-by
|
- |
结合**-T,--tab=path **选项使用,tb_name.txt 文件中的字段以指定字符串括起来,默认无--fields-optionally-enclosed-by=name
|
|
--fields-escaped-by
|
- |
结合**-T,--tab=path **选项使用,tb_name.txt 文件中的字段以指定字符串转义,默认\ ,效果就是将 \ 替换成指定字符,--fields-escaped-by=name
|
|
--flush-logs
|
-F
|
False
|
备份前生成新的服务器备份库的二进制日志文件, 备份多个库则每个库都会生成一个, 需要 RELOAD 权限,如果只想生成一次,则应搭配 --lock-all-tables 或--master-data 使用
|
--flush-privileges
|
False
|
在备份后执行FLUSH PRIVILEGES ,在备份包含 MySQL 数据库或任何依赖MySQL 中的数据库的数据库时需要使用
|
|
--force
|
-f
|
False
|
忽略错误 |
--gtid
|
- |
与--master-data=1 或dump-slave=1 搭配使用,当启用时,输出内容中将设置 GTID 位置替代binlog 文件和偏移量,binlog 文件和偏移量将仅作为注释显示;当禁用时,与之相反, GTID 将仅作为注释显示
|
|
--help
|
-?
|
- |
显示mysqldump 工具帮助信息
|
--hex-blob
|
False
|
将BINARY, VARBINARY, BLOB 格式的二进制字符串备份成十六进制
|
|
--host
|
-h
|
- |
指定连接主机,--host=name
|
--ignore-database
|
- |
忽略备份的库,忽略多个库需要多次使用该指令; 与 --all-database 或-A 搭配使用--ignore-database=db_name
|
|
--ignore-table-data
|
- |
忽略备份的表的数据,忽略多个表的数据需要多次使用该指令; 必须同时指定数据库和表名; --ignore-table-data=db_name.tb_name
|
|
--ignore-table
|
- |
忽略备份的表,忽略多个表需要多次使用该指令; 必须同时指定数据库和表名; --ignore-table=db_name.tb_name
|
|
--include-master-host-port
|
False
|
在使用--dump-slave 时候,在 CHANGE MASTER TO 语句中添加MASTER_HOST=host 和MASTER_PORT=port
|
|
--insert-ignore
|
False
|
使用INSERT IGNORE 替代INSERT ,有重复数据时候忽略报错
|
|
--lines-terminated-by
|
- |
结合**-T,--tab=path **选项使用,tb_name.txt 文件以指定字符串结尾,默认无,--lines-terminated-by=name
|
|
--lock-all-tables
|
-x
|
False
|
在备份期间通过获取全局读取锁来锁定所有库和所有表, 将会自动关闭 --single-transaction 和--lock-tables
|
--lock-tables
|
-l
|
True
|
对需要备份的库的所有表加读锁, 事务型表使用 --single-transaction 而非**--lock-tables **
|
--skip-lock-tables
|
- |
关闭**--lock-tables **
|
|
--log-error
|
- |
指定文件中添加告警和错误日志,--log-error=file
|
|
--log-queries
|
True
|
到数据恢复时,如果日志记录是打开的,把查询记录到常规和慢查询日志中 | |
--skip-log-queries
|
- |
禁用**--log-queries **
|
|
--master-data
|
0
|
将日志文件名和位置附加到备份文件中,默认值为0 如果值为 1 ,将会以CHANGE MASTER 命令的形式附加,如果值为2, CHANGE MASTER 命令将会以注释形式附加,除非指定了 --single-transaction ,否则将自动开启全局读锁选项 --lock-all-tables ,该选项会自动关闭 --lock-tables ,--master-data=0
|
|
--max-allowed-packet
|
25165824
|
与服务器通信的最大数据包长度,应该大于单行数据大小, 小于mysql服务端设置的该变量大小,默认 24M
|
|
--net-buffer-length
|
1046528
|
TCP/IP和Socket通信的缓冲区大小 | |
--no-autocommit
|
False
|
在INSERT 语句前添加set autocommit=0; ,在 INSERT 语句及UNLOCK TABLES 后添加commit; ,autocommit=0 表示当前连接的操作都会被当成一个事务,直到调用 commit 提交或ROLLBACK 可以回滚;autocommit=1 每条语句会被当成单独的事务,自动commit
|
|
--no-create-db
|
-n
|
False
|
与--all-databases 或--databases 搭配使用,取消创建数据库 CREATE DATABASE...IF NOT EXISTS 语句
|
--no-create-info
|
-t
|
False
|
取消创建数据表相关语句, 包括 DROP TABLE IF EXISTS... 和CREATE TABLE... 语句
|
--no-data
|
-d
|
False
|
仅备份数据结构,不备份数据 |
--no-set-names
|
-N
|
- |
等同于--skip-set-charset
|
--opt
|
- |
等同于--add-drop-table --add-locks --create-options --quick --extended-insert --lock-tables --set-charset --disable-keys
|
|
--skip-opt
|
- |
禁用**--opt **,禁用 --add-drop-table --add-locks --create-options --quick --extended-insert --lock-tables --set-charset --disable-keys
|
|
--order-by-primary
|
False
|
如果备份表存在主键和唯一键,将会以主键和唯一键排序, 对于需要将MyISAM数据导入INNODB表时非常有用, 但会增加数据备份时长 |
|
--password
|
-p
|
- |
用户账号的密码,如果没有给出密码则会提示输入密码,--password=name
|
--port
|
-P
|
0
|
MySQL 服务连接端口,--port=3306
|
--protocol
|
- |
连接协议,可选的有tcp、socket、pipe、memory ,--protocol=name
|
|
--quick
|
-q
|
True
|
不缓冲查询,直接将结果转向标准输出 |
--skip-quick
|
- |
禁用**--quick **
|
|
--quote-names
|
-Q
|
True
|
表名、列名、字段等加反引号括起来 |
--skip-quote-names
|
- |
禁用**--quote-names **
|
|
--replace
|
False
|
使用REPLACE INTO 语句替代INSERT INTO 语句,REPLACE INTO 会先根据主键或唯一索引判断是否有重复数据,如果有则替换旧数据,没有则直接插入新数据, 没有主键或唯一索引的表可能导致重复数据 |
|
--result-file=name
|
-r
|
- |
结果输出到指定文件中, 用在使用回车换行符 \r\n 分隔文本的系统中,如Windows 、DOS ,--result-file=name
|
--routines
|
-R
|
False
|
备份函数和存储过程 |
--set-charset
|
True
|
再备份文件中添加字符集相关信息,/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */;
|
|
--skip-set-charset
|
- |
禁用**--set-charset **
|
|
--single-transaction
|
False
|
通过在一个事务中备份所有表来创建一致性快照, 设置事务隔离级别为可重复读,即 Repeatable Read ,并向服务端发送 START TRANSACTION ,在这期间不会锁表其他连接对数据的修改对事务内相同的查询结果没有影响, 仅对支持事务隔离的引擎有效,当前只支持INNODB, 为保障备份有效性,其他连接不可以使用 ALTER TABLE 、DROP TABLE 、TRUNCATE TABLE 、RENAME TABLE 语句,因为事务快照不会与它们隔离, 该选项会自动关闭选项 --lock-tables
|
|
--dump-date
|
True
|
在备份文件末尾添加备份完成日期和时间, 如 -- Dump completed on 2021-03-02 3:56:16
|
|
--skip-dump-date
|
- |
禁用**--dump-date **,备份文件结尾为 -- Dump completed ,不再显示日期和时间
|
|
--socket=name
|
-S
|
- |
Socket 连接文件地址,--socket=name
|
--ssl
|
False
|
连接启用SSL (使用其他标志自动启用)
|
|
--ssl-ca
|
- |
指定PEM 格式的CA 文件名称,自动启用--ssl ,--ssl-ca=name
|
|
--ssl-capath
|
- |
指定CA 文件目录,自动启用--ssl ,--ssl-capath=name
|
|
--ssl-cert
|
- |
指定PEM 格式的X509 证书文件名称,自动启用--ssl ,--ssl-cert=name
|
|
--ssl-cipher
|
- |
用于SSL 加密的密码,自动启用--ssl ,--ssl-cipher=name
|
|
--ssl-key
|
- |
指定PEM 格式的X509 密钥文件名称,自动启用--ssl ,--ssl-key=name
|
|
--ssl-verify-server-cert
|
False
|
用主机名验证证书中的Common Name 字段
|
|
--tab
|
-T
|
- |
在指定目录创建TAB 分隔的tb_name.txt 文件和数据备份文件tb_name.sql ,仅当 mysqldump 与服务器在一台服务器时使用,目录需要设置 chown mysql.mysql tab_path ,--tab=name
|
--tables
|
- |
覆盖选项--databases ,指定单个数据库的多张表
|
|
--triggers
|
True
|
备份表关联的触发器 | |
--skip-triggers
|
- |
禁用**--triggers **
|
|
--tz-utc
|
True
|
在备份文件开头添加SET TIME_ZONE='+00:00' ,允许备份的数据库中有不同时区的 TIMESTAMP 类型数据,或要将这一类数据迁移到不同时区时 |
|
--skip-tz-utc
|
- |
禁用**--tz-utc **
|
|
--user
|
-u
|
- |
用于连接的用户账号,--user=name
|
--verbose
|
-v
|
False
|
显示备份过程中各阶段信息 |
--version
|
-V
|
- | 打印版本号 |
--where=name
|
-w
|
- |
仅备份选定的数据记录,在查询语句后边添加WHERE 条件语句--where=name
|
--xml
|
-X
|
- |
备份文件以xml 格式导出
|
--plugin-dir
|
- |
客户端插件目录,--plugin-dir=name
|
|
--default-auth
|
- |
客户端验证插件名称,--default-auth=name
|
(1)、从news_list数据库的sdata表中导出addtime>1682352000 且 addtime<1682524800的数据到 /root/web_news.sql 这个文件中
mysqldump -uroot -p yundreams web_news --where=" pushtime>1682352000 and pushtime<1682524800" >/root/web_news.sql
(2)、导出*.txt格式的文本文件
mysqldump -uroot -p yundreams web_news --where=" pushtime>1682352000 and pushtime<1682524800" >/root/web_news.txt
(3)、导出结构不导出数据
mysqldump -d -uroot -p yundreams > yundreams.sql
(4)、导出数据不导出结构
mysqldump -t -uroot -p yundreams > yundreams.sql
(5)、导出特定表的结构
mysqldump -uroot -p -B yundreams > yundreams.sql
以上就是云梦编程为大家介绍的关于mysql导出某个表的部分数据的方法的全部内容了,了解更多相关文章请关注云梦编程网!