MYSQL入门学习之十九:MYSQLDUMP命令参数详解

标签: mysql 学习 十九 | 发表时间:2012-12-29 00:20 | 作者:warmspace2008
出处:http://blog.csdn.net

mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等。对于导出的文件,可使用SOURCE命令导入数据库。

使用mysqldump -?命令,可以查看mysqldump的具体参数及详细说明。下表是一些常见的选项:

-A, --all-databases Dump all the databases. This will be same as --databases with all databases selected. 导出全部数据库
-Y, --all-tablespaces Dump all the tablespaces. 导出全部表空间
-y, --no-tablespaces Do not dump any tablespace information. 不导出任何表空间信息
--add-drop-database Add a 'DROP DATABASE' before each create. 每个数据库创建之前添加drop数据库语句
--add-drop-table Add a 'drop table' before each create. 每个数据表创建之前添加drop数据表语句。(默认为打开状态,使用--skip-add-drop-table取消选项)
--add-locks Add locks around insert statements. 在每个表导出之前增加LOCK TABLES并且之后UNLOCK  TABLE。(默认为打开状态,使用--skip-add-locks取消选项)
--allow-keywords Allow creation of column names that are keywords. 允许创建是关键词的列名字。
--character-sets-dir=name Directory where character sets are. 字符集文件的目录
-i, --comments Write additional information. 附加注释信息。默认为打开,可以用--skip-comments取消
--compatible=name Change the dump to be compatible with a given mode. By default tables are dumped in a format optimized for MySQL. Legal modes are: ansi, mysql323, mysql40, postgresql, oracle, mssql, db2, maxdb, no_key_options, no_table_options, no_field_options. One can use several modes separated by commas. Note: Requires MySQL server version 4.1.0 or higher. This option is ignored with earlier server versions. 导出的数据将和其它数据库或旧版本的MySQL 相兼容。值可以为ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options等。要使用几个值,用逗号将它们隔开。它并不保证能完全兼容,而是尽量兼容。
--compact Give less verbose output (useful for debugging). Disables structure comments and header/footer constructs.  Enables options --skip-add-drop-table --no-set-names --skip-disable-keys --skip-add-locks 导出更少的输出信息(用于调试)。去掉注释和头尾等结构。可以使用选项:--skip-add-drop-table  --skip-add-locks --skip-comments --skip-disable-keys
-c, --complete-insert Use complete insert statements. 使用完整的insert语句(包含列名称)。这么做能提高插入效率,但是可能会受到max_allowed_packet参数的影响而导致插入失败。
-C, --compress Use compression in server/client protocol. 在客户端和服务器之间启用压缩传递所有信息
--create-options Include all MySQL specific create options. 在CREATE TABLE语句中包括所有MySQL特性选项。(默认为打开状态)
-B, --databases To dump several databases. Note the difference in usage; In this case no tables are given. All name arguments are regarded as databasenames. 'USE db_name;' will be included in the output. 导出数据库。参数后面所有名字参量都被看作数据库名。
-#, --debug[=#] This is a non-debug version. Catch this and exit 输出debug信息,用于调试。
--debug-check Check memory and open file usage at exit. 检查内存和打开文件使用说明并退出。
--debug-info Print some debug info at exit. 输出调试信息并退出
--default-character-set=name Set the default character set. 设置默认字符集
--delayed-insert Insert rows with INSERT DELAYED; 采用延时插入方式(INSERT DELAYED)导出数据
--delete-master-logs Delete logs on master after backup. This automatically enables --master-data. master备份后删除日志. 这个参数将自动激活--master-data。
-K, --disable-keys '/*!40000 ALTER TABLE tb_name DISABLE KEYS */; and '/*!40000 ALTER TABLE tb_name ENABLE KEYS */; will be put in the output. 对于每个表,用/*!40000 ALTER TABLE tbl_name DISABLE KEYS */;和/*!40000 ALTER TABLE tbl_name ENABLE KEYS */;语句引用INSERT语句。这样可以更快地导入dump出来的文件,因为它是在插入所有行后创建索引的。该选项只适合MyISAM表,默认为打开状态。
-E, --events Dump events. 导出事件。
-e, --extended-insert Allows utilization of the new, much faster INSERT syntax. 使用具有多个VALUES列的INSERT语法。这样使导出文件更小,并加速导入时的速度。默认为打开状态,使用--skip-extended-insert取消选项。
--fields-terminated-by=name Fields in the textfile are terminated by ... 导出文件中忽略给定字段。与--tab选项一起使用,不能用于--databases和--all-databases选项
--fields-enclosed-by=name Fields in the importfile are enclosed by ... 输出文件中的各个字段用给定字符包裹。与--tab选项一起使用,不能用于--databases和--all-databases选项
--fields-optionally-enclosed-by=name Fields in the i.file are opt. enclosed by ... 输出文件中的各个字段用给定字符选择性包裹。与--tab选项一起使用,不能用于--databases和--all-databases选项
--fields-escaped-by=name Fields in the i.file are escaped by ... 输出文件中的各个字段忽略给定字符。与--tab选项一起使用,不能用于--databases和--all-databases选项
-F, --flush-logs Flush logs file in server before starting dump. Note that if you dump many databases at once (using the option --databases= or --all-databases), the logs will be flushed for each database dumped. The exception is when using --lock-all-tables or --master-data: in this case the logs will be flushed only once, corresponding to the moment all tables are locked. So if you want your dump and the log flush to happen at the same exact moment you should use --lock-all-tables or --master-data with --flush-logs 开始导出之前刷新日志。
--flush-privileges Emit a FLUSH PRIVILEGES statement after dumping the mysql database.  This option should be used any time the dump contains the mysql database and any other database that depends on the data in the mysql database for proper restore. 在导出mysql数据库之后,发出一条FLUSH  PRIVILEGES 语句。为了正确恢复,该选项应该用于导出mysql数据库和依赖mysql数据库数据的任何时候。
-f, --force Continue even if we get an sql-error. 在导出过程中忽略出现的SQL错误。
-?, --help Display this help message and exit. 显示帮助信息并退出。
--hex-blob Dump binary strings (BINARY, VARBINARY, BLOB) in hexadecimal format. 使用十六进制格式导出二进制字符串字段。如果有二进制数据就必须使用该选项。影响到的字段类型有BINARY、VARBINARY、BLOB。
-h, --host=name Connect to host. 需要导出的主机信息
--ignore-table=name Do not dump the specified table. To specify more than one table to ignore, use the directive multiple times, once for each table.  Each table must be specified with both database and table names, e.g. --ignore-table=database.table 不导出指定表。指定忽略多个表时,需要重复多次,每次一个表。每个表必须同时指定数据库和表名。例如:--ignore-table=database.table1 --ignore-table=database.table2 ……
--insert-ignore Insert rows with INSERT IGNORE. 在插入行时使用INSERT IGNORE语句.
--lines-terminated-by=name Lines in the i.file are terminated by ... 输出文件的每行用给定字符串划分。与--tab选项一起使用,不能用于--databases和--all-databases选项。
-x, --lock-all-tables Locks all tables across all databases. This is achieved by taking a global read lock for the duration of the whole dump. Automatically turns --single-transaction and --lock-tables off. 提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭--single-transaction 和--lock-tables 选项。
-l, --lock-tables Lock all tables for read. 开始导出前,锁定所有表。用READ  LOCAL锁定表以允许MyISAM表并行插入。对于支持事务的表例如InnoDB和BDB,--single-transaction是一个更好的选择,因为它根本不需要锁定表。
请注意当导出多个数据库时,--lock-tables分别为每个数据库锁定表。因此,该选项不能保证导出文件中的表在数据库之间的逻辑一致性。不同数据库表的导出状态可以完全不同。
--log-error=name Append warnings and errors to given file. 附加警告和错误信息到给定文件
--no-autocommit Wrap tables with autocommit/commit statements. 使用autocommit/commit 语句包裹表
-n, --no-create-db 'CREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name;' will not be put in the output. The above line will be added otherwise, if --databases or --all-databases option was given.}. 只导出数据,而不添加CREATE DATABASE 语句
-t, --no-create-info Don't write table creation info. 只导出数据,而不添加CREATE TABLE 语句
-d, --no-data No row information. 不导出任何数据,只导出数据库表结构
--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. 等同于--add-drop-table,  --add-locks, --create-options, --quick, --extended-insert, --lock-tables,  --set-charset, --disable-keys 该选项默认开启,  可以用--skip-opt禁用.
--order-by-primary Sorts each table's rows by primary key, or first unique key, if such a key exists.  Useful when dumping a MyISAM table to be loaded into an InnoDB table, but will make the dump itself take considerably longer. 如果存在主键,或者第一个唯一键,对每个表的记录进行排序。在导出MyISAM表到InnoDB表时有效,但会使得导出工作花费很长时间。
-p, --password[=name] Password to use when connecting to server. If password is not given it's solicited on the tty. 连接数据库密码
-W, --pipe Use named pipes to connect to server. 使用命名管道连接mysql(windows系统可用)
-P, --port=# Port number to use for connection. 连接数据库端口号
--protocol=name The protocol of connection (tcp,socket,pipe,memory). 使用的连接协议,包括:tcp, socket, pipe, memory.
-q, --quick Don't buffer query, dump directly to stdout. 不缓冲查询,直接导出到标准输出。默认为打开状态,使用--skip-quick取消该选项。
-Q, --quote-names Quote table and column names with backticks (`). 使用(`)引起表和列名。默认为打开状态,使用--skip-quote-names取消该选项。
--replace Use REPLACE INTO instead of INSERT INTO. 使用REPLACE INTO 取代INSERT INTO.
-r, --result-file=name Direct output to a given file. This option should be used in MSDOS, because it prevents new line '\n' from being converted to '\r\n' (carriage return + line feed). 直接输出到指定文件中。该选项应该用在使用回车换行对(\\r\\n)换行的系统上(例如:DOS,Windows)。该选项确保只有一行被使用。
-R, --routines Dump stored routines (functions and procedures). 导出存储过程以及自定义函数。
--set-charset Add 'SET NAMES default_character_set' to the output. Enabled by default; suppress with --skip-set-charset. 添加'SET NAMES  default_character_set'到输出文件。默认为打开状态,使用--skip-set-charset关闭选项。
-O, --set-variable=name Change the value of a variable. Please note that this option is deprecated; you can set variables directly with --variable-name=value. 设置变量的值
--dump-date Put a dump date to the end of the output. 添加DUMP时间到输出末尾
--skip-opt Disable --opt. Disables --add-drop-table, --add-locks, --create-options, --quick, --extended-insert, --lock-tables, --set-charset, and --disable-keys. 禁用–opt选项.
-S, --socket=name Socket file to use for connection. 指定连接mysql的socket文件位置,默认路径/tmp/mysql.sock
-T, --tab=name Creates tab separated textfile for each table to given path. (creates .sql and .txt files). NOTE: This only works if mysqldump is run on the same machine as the mysqld daemon. 为每个表在给定路径创建tab分割的文本文件。注意:仅仅用于mysqldump和mysqld服务器运行在相同机器上。
--tables Overrides option --databases (-B). 覆盖--databases (-B)参数,指定需要导出的表名。
--triggers Dump triggers for each dumped table 导出触发器。该选项默认启用,用--skip-triggers禁用它。
--tz-utc SET TIME_ZONE='+00:00' at top of dump to allow dumping of TIMESTAMP data when a server has data in different time zones or data is being moved between servers with different time zones. 在导出顶部设置时区TIME_ZONE='+00:00' ,以保证在不同时区导出的TIMESTAMP 数据或者数据被移动其他时区时的正确性。
-u, --user=name User for login if not current user. 指定连接的用户名。
-v, --verbose Print info about the various stages. 输出多种平台信息。
-V, --version Output version information and exit. 输出mysqldump版本信息并退出
-w, --where=name Dump only selected records; QUOTES mandatory! 只转储给定的WHERE条件选择的记录。请注意如果条件包含命令解释符专用空格或字符,一定要将条件引用起来。
-X, --xml                               Dump a database as well formed XML. 导出XML格式.

示例:
1、导出数据库下某个表的结构
C:\Users\qxl>mysqldump -uroot -p -d mydb t_user
2、按条件只导出表中的数据
C:\Users\qxl>mysqldump -uroot -p "--where=id<10" -t mydb t_user

作者:warmspace2008 发表于2012-12-29 0:20:58 原文链接
阅读:10 评论:0 查看评论

相关 [mysql 学习 十九] 推荐:

MYSQL入门学习之十九:MYSQLDUMP命令参数详解

- - CSDN博客推荐文章
mysqldump是mysql用于转存储数据库的实用程序. 它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等. 对于导出的文件,可使用SOURCE命令导入数据库. 使用mysqldump -?命令,可以查看mysqldump的具体参数及详细说明.

mysql系统变量专题学习

- - IT技术博客大学习
要深入研究mysql那首先对mysql的一些系统/扩展变量有一定的了解,因为这些变量不仅决定mysql一些配置信息,还影响了mysql的性能优化提升,其中包括安全、优化、并发、复制等等. 笔者上网查了一下,这些资料有限,以及官网的一个中文文档介绍的内容简短(不包括值域,作用域,有些变量压根没翻译只是给出值)所以想写篇文章,一来学习巩固一下mysql,二来方便以后查阅.

MySQL学习笔记 8 -性能优化

- - CSDN博客数据库推荐文章
SHOW STATUS LIKE ‘value'; 查询MySQL数据库的性能. Connections:连接MySQL服务器的次数. Uptime:MySQL服务器的上线时间. Slow_queries:慢查询的次数. Com_lelect:查询操作的次数. Com_insert:插入操作的次数.

Mysql高性能学习笔记-02

- - ITeye博客
Mysql高性能学习笔记2. 高性能Mysql中的第二章-基准测试和第三章-服务器性能剖析是需要全局考虑的问题,不同的应用场景,基准测试的方式和输入数据是不太一样的. 所以我们后续再讨论这两个问题,先放过去,直接进行优化schema和数据类型的这一话题. 优化数据类型,基本上是用在建表和修改表的场景上,整个优化数据类型这一话题说下来,基本上都是集中于:对于DB数据的高效存储和高效查询.

MySQL学习(索引、引擎、优化)

- - 数据库 - ITeye博客
索引对于查询的速度至关重要,理解索引也是数据库调优的起点. 建立索引前,先设计好建立索引列的数据类型. 1)越小的数据类型性能越好:因为越小的数据类型对于硬盘读取、内存、CPU缓存都需要更少的空间,处理起来更快. 2)简单的数据类型更好:整型比字符型更好. 3)尽量避免使用NULL: 建立索引的列最好是Not Null约束的,如果一定要用NULL,可以用0或者某特殊值替代.

MySQL Gtid复制方案学习

- - 小火箭
MySQL从5.6开始出了新的主从复制解决方案: Replication with Global Transaction Identifiers. 在整个复制集群中能够唯一的标识一个事务. 确保同一个事务只会被执行一次. 无法使用 CREATE TABLE. SELECT statements语句.

淘宝商品库MySQL优化实践的学习

- - 标点符
淘宝商品库是淘宝网最核心的数据库之一,采用MySQL主备集群的架构,特点是数据量大且增长速度快,读多写少,对安全性要求高,并发请求高. 由于MySQL最初的设计不是用来存储大规模数据的,但淘宝的数据量非常惊人,所以在I/O方面,尤其是CPU I/O层面会有很大瓶颈,因此淘宝的主要目标也是解决IO方面的瓶颈问题.

Linux Ksplice,MySQL and Oracle

- Syn - DBA Notes
Oracle 在 7 月份收购了 Ksplice. 使用了 Ksplice 的 Linux 系统,为 Kernel 打补丁无需重启动,做系统维护的朋友应该明白这是一个杀手级特性. 现在该产品已经合并到 Oracle Linux 中. 目前已经有超过 700 家客户,超过 10 万套系统使用了 Ksplice (不知道国内是否已经有用户了.

MySQL Replication 线程

- - CSDN博客推荐文章
Replication 线程. Mysql 的Replication 是一个异步的复制过程,从一个Mysql instace(我们称之为Master)复制到另一个Mysql instance(我们称之Slave). 在Master 与Slave 之间的实现整个复制过程主. 要由三个线程来完成,其中两个线程(Sql 线程和IO 线程)在Slave 端,另外一个线程(IO 线程)在Master 端.

mysql backup 脚本

- - ITeye博客
网上备份脚本很多,但考虑都不周全. 保证创建备份文件只能是创建者跟root可以访问,其他用户没有权限,保证了数据库备份的安全. 上面脚本是负责备份的份数管理,. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.