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