`
bsr1983
  • 浏览: 1117518 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql导出指定表数据

 
阅读更多

1.导出指定表的数据

mysqldump -t database -uusername -ppassword --tables table1 table2 table3 table4>C:\allData.sql

2.导出指定表的结构

mysqldump -d database -uusername -ppassword --tables table1 table2 table3 table4>C:\alltable.sql

3.导出表的数据及结构

mysqldump  database -uusername -ppassword --tables table1 table2 table3 table4>C:\allData.sql

 

具体参数说明: http://dev.mysql.com/doc/refman/5.1/zh/client-side-scripts.html#mysqldump

 

mysqldump客户端可用来转储数据库或搜集数据库进行备份或将数据转移到另一个SQL服务器(不一定是一个MySQL服务器)。转储包含创建表和/或装载表的SQL语句。

如果你在服务器上进行备份,并且表均为MyISAM表,应考虑使用mysqlhotcopy,因为可以更快地进行备份和恢复。参见8.9节,“mysqlhotcopy:数据库备份程序”

3种方式来调用mysqldump

shell> mysqldump [options] db_name [tables]
shell> mysqldump [options] ---database DB1 [DB2 DB3...]
shell> mysqldump [options] --all--database

如果没有指定任何表或使用了---database--all--database选项,则转储整个数据库。

要想获得你的版本的mysqldump支持的选项,执行mysqldump ---help

如果运行mysqldump没有--quick--opt选项,mysqldump在转储结果前将整个结果集装入内存。如果转储大数据库可能会出现问题。该选项默认启用,但可以用--skip-opt禁用。

如果使用最新版本的mysqldump程序生成一个转储重装到很旧版本的MySQL服务器中,不应使用--opt-e选项。

mysqldump支持下面的选项:

·         ---help-

显示帮助消息并退出。

·         --add-drop--database

在每个CREATE DATABASE语句前添加DROP DATABASE语句。

·         --add-drop-tables

在每个CREATE TABLE语句前添加DROP TABLE语句。

·         --add-locking

LOCK TABLESUNLOCK TABLES语句引用每个表转储。重载转储文件时插入得更快。参见7.2.16节,“INSERT语句的速度”

·         --all--database-A

转储所有数据库中的所有表。与使用---database选项相同,在命令行中命名所有数据库。

·         --allow-keywords

允许创建关键字列名。应在每个列名前面加上表名前缀。

·         ---comments[={0|1}]

如果设置为 0,禁止转储文件中的其它信息,例如程序版本、服务器版本和主机。--skipcomments---comments=0的结果相同。 默认值为1,即包括额外信息。

·         --compact

产生少量输出。该选项禁用注释并启用--skip-add-drop-tables--no-set-names--skip-disable-keys--skip-add-locking选项。

·         --compatible=name

产生与其它数据库系统或旧的MySQL服务器更兼容的输出。值可以为ansimysql323mysql40postgresqloraclemssqldb2maxdbno_key_optionsno_tables_options或者no_field_options。要使用几个值,用逗号将它们隔开。这些值与设置服务器SQL模式的相应选项有相同的含义。参见5.3.2节,“SQL服务器模式”

该选项不能保证同其它服务器之间的兼容性。它只启用那些目前能够使转储输出更兼容的SQL模式值。例如,--compatible=oracle 不映射Oracle类型或使用Oracle注释语法的数据类型。

·         --complete-insert-c

使用包括列名的完整的INSERT语句。

·         --compress-C

压缩在客户端和服务器之间发送的所有信息(如果二者均支持压缩)。

·         --create-option

CREATE TABLE语句中包括所有MySQL表选项。

·         ---database-B

转储几个数据库。通常情况,mysqldump将命令行中的第1个名字参量看作数据库名,后面的名看作表名。使用该选项,它将所有名字参量看作数据库名。CREATE DATABASE IF NOT EXISTS db_nameUSE db_name语句包含在每个新数据库前的输出中。

·         ---debug[=debug_options]-# [debug_options]

写调试日志。debug_options字符串通常为'd:t:o,file_name'

·         --default-character-set=charset

使用charsetas默认字符集。参见5.10.1节,“数据和排序用字符集”。如果没有指定,mysqldump使用utf8

·         --delayed-insert

使用INSERT DELAYED语句插入行。

·         --delete-master-logs

在主复制服务器上,完成转储操作后删除二进制日志。该选项自动启用--master-data

·         --disable-keys-K

对于每个表,用/*!40000 ALTER TABLE tbl_name DISABLE KEYS */;/*!40000 ALTER TABLE tbl_name ENABLE KEYS */;语句引用INSERT语句。这样可以更快地装载转储文件,因为在插入所有行后创建索引。该选项只适合MyISAM表。

·         --extended-insert-e

使用包括几个VALUES列表的多行INSERT语法。这样使转储文件更小,重载文件时可以加速插入。

·         --fields-terminated-by=...--fields-enclosed-by=...--fields-optionally-enclosed-by=...--fields-escaped-by=...---terminated-by=...

这些选项结合-T选项使用,与LOAD DATA INFILE的相应子句有相同的含义。参见13.2.5节,“LOAD DATA INFILE语法”

·         --first-slave-x

不赞成使用,现在重新命名为--lock-all-tables

·         --flush-logs-F

开始转储前刷新MySQL服务器日志文件。该选项要求RELOAD权限。请注意如果结合--all--database(-A)选项使用该选项,根据每个转储的数据库刷新日志。例外情况是当使用--lock-all-tables--master-data的时候:在这种情况下,日志只刷新一次,在所有 表被锁定后刷新。如果你想要同时转储和刷新日志,应使用--flush-logs连同--lock-all-tables--master-data

·         --force-f

在表转储过程中,即使出现SQL错误也继续。

·         --host=host_name-h host_name

从给定主机的MySQL服务器转储数据。默认主机是localhost

·         --hex-blob

使用十六进制符号转储二进制字符串列(例如,'abc' 变为0x616263)。影响到的列有BINARYVARBINARYBLOB

·         --lock-all-tables-x

所有数据库中的所有表加锁。在整体转储过程中通过全局读锁定来实现。该选项自动关闭--single-transaction--lock-tables

·         --lock-tables-l

开始转储前锁定所有表。用READ LOCAL锁定表以允许并行插入MyISAM表。对于事务表例如InnoDBBDB--single-transaction是一个更好的选项,因为它不根本需要锁定表。

请注意当转储多个数据库时,--lock-tables分别为每个数据库锁定表。因此,该选项不能保证转储文件中的表在数据库之间的逻辑一致性。不同数据库表的转储状态可以完全不同。

·         --master-data[=value]

该选项将二进制日志的位置和文件名写入到输出中。该选项要求有RELOAD权限,并且必须启用二进制日志。如果该选项值等于1,位置和文件名被写入CHANGE MASTER语句形式的转储输出,如果你使用该SQL转储主服务器以设置从服务器,从服务器从主服务器二进制日志的正确位置开始。如果选项值等于2CHANGE MASTER语句被写成SQL注释。如果value被省略,这是默认动作。

--master-data选项启用--lock-all-tables,除非还指定--single-transaction(在这种情况下,只在刚开始转储时短时间获得全局读锁定。又见--single-transaction。在任何一种情况下,日志相关动作发生在转储时。该选项自动关闭--lock-tables

·         --no-create-db-n

该选项禁用CREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name语句,如果给出---database--all--database选项,则包含到输出中。

·         --no-create-info-t

不写重新创建每个转储表的CREATE TABLE语句。

·         --no-data-d

不写表的任何行信息。如果你只想转储表的结构这很有用。

·         --opt

该选项是速记;等同于指定 --add-drop-tables--add-locking --create-option --disable-keys--extended-insert --lock-tables --quick --set-charset。它可以给出很快的转储操作并产生一个可以很快装入MySQL服务器的转储文件。该选项默认开启,但可以用--skip-opt禁用。要想只禁用确信用-opt启用的选项,使用--skip形式;例如,--skip-add-drop-tables--skip-quick

·         --password[=password]-p[password]

连接服务器时使用的密码。如果你使用短选项形式(-p)不能在选项和密码之间有一个空格。如果在命令行中,忽略了--password-p选项后面的 密码值,将提示你输入一个。

·         --port=port_num-P port_num

用于连接的TCP/IP端口号。

·         --protocol={TCP | SOCKET | PIPE | MEMORY}

使用的连接协议。

·         --quick-q

该选项用于转储大的表。它强制mysqldump从服务器一次一行地检索表中的行而不是检索所有行并在输出前将它缓存到内存中。

·         --quote-names-Q

用‘`’字符引用数据库、表和列名。如果服务器SQL模式包括ANSI_QUOTES选项,用‘"’字符引用名。默认启用该选项。可以用--skip-quote-names禁用,但该选项应跟在其它选项后面,例如可以启用--quote-names--compatible

·         --result-file=file-r file

将输出转向给定的文件。该选项应用在Windows中,因为它禁止将新行‘\n’字符转换为‘\r\n’回车、返回/新行序列。

·         --routines-R

在转储的数据库中转储存储程序(函数和程序)。使用---routines产生的输出包含CREATE PROCEDURECREATE FUNCTION语句以重新创建子程序。但是,这些语句不包括属性,例如子程序定义者或创建和修改时间戳。这说明当重载子程序时,对它们进行创建时定义者应设置为重载用户,时间戳等于重载时间。

如果你需要创建的子程序使用原来的定义者和时间戳属性,不使用--routines。相反,使用一个具有mysql数据库相应权限的MySQL账户直接转储和重载mysql.proc表的内容。

该选项在MySQL 5.1.2中添加进来。在此之前,存储程序不转储。

·         --set-charset

SET NAMES default_character_set加到输出中。该选项默认启用。要想禁用SET NAMES语句,使用--skip-set-charset

·         --single-transaction

该选项从服务器转储数据之前发出一个BEGIN SQL语句。它只适用于事务表,例如InnoDBBDB,因为然后它将在发出BEGIN而没有阻塞任何应用程序时转储一致的数据库状态。

当使用该选项时,应记住只有InnoDB表能以一致的状态被转储。例如,使用该选项时任何转储的MyISAMHEAP表仍然可以更改状态。

--single-transaction选项和--lock-tables选项是互斥的,因为LOCK TABLES会使任何挂起的事务隐含提交。

要想转储大的表,应结合--quick使用该选项。

·         --socket=path-S path

当连接localhost(为默认主机)时使用的套接字文件。

·         --skip--comments

参见---comments选项的描述。

·         --tab=path-T path

产生tab分割的数据文件。对于每个转储的表,mysqldump创建一个包含创建表的CREATE TABLE语句的tbl_name.sql文件,和一个包含其数据的tbl_name.txt文件。选项值为写入文件的目录。

默认情况,.txt数据文件的格式是在列值和每行后面的新行之间使用tab字符。可以使用--fields-xxx----xxx选项明显指定格式。

注释:该选项只适用于mysqldumpmysqld服务器在同一台机器上运行时。你必须具有FILE权限,并且服务器必须有在你指定的目录中有写文件的许可。

·         --tables

覆盖---database-B选项。选项后面的所有参量被看作表名。

·         --triggers

为每个转储的表转储触发器。该选项默认启用;用--skip-triggers禁用它。

·         --tz-utc

在转储文件中加入SET TIME_ZONE='+00:00'以便TIMESTAMP列可以在具有不同时区的服务器之间转储和重载。(不使用该选项,TIMESTAMP列在具有本地时区的源服务器和目的服务器之间转储和重载)--tz-utc也可以保护由于夏令时带来的更改。--tz-utc默认启用。要想禁用它,使用--skip-tz-utc。该选项在MySQL 5.1.2中加入。

·         --user=user_name-u user_name

连接服务器时使用的MySQL用户名。

·         --verbose-v

冗长模式。打印出程序操作的详细信息。

·         --version-V

显示版本信息并退出。

·         --where='where-condition'-w 'where-condition'

只转储给定的WHERE条件选择的记录。请注意如果条件包含命令解释符专用空格或字符,一定要将条件引用起来。

例如:

"--where=user='jimf'"
"-wuserid>1"
"-wuserid<1"

·         --xml-X

将转储输出写成XML

还可以使用--var_name=value选项设置下面的变量:

·         max_allowed_packet

客户端/服务器之间通信的缓存区的最大大小。最大为1GB

·         net_buffer_length

客户端/服务器之间通信的缓存区的初始大小。当创建多行插入语句时(如同使用选项--extended-insert--opt)mysqldump创建长度达net_buffer_length的行。如果增加该变量,还应确保在MySQL服务器中的net_buffer_length变量至少这么大。

还可以使用--set-variable=var_name=value-O var_name=value语法设置变量。然而,现在不赞成使用该语法。

mysqldump最常用于备份一个整个的数据库:

shell> mysqldump --opt db_name > backup-file.sql

你可以这样将转储文件读回到服务器:

shell> mysql db_name < backup-file.sql

或者为:

shell> mysql -e "source /path-to--backup/backup-file.sql" db_name

mysqldump也可用于从一个MySQL服务器向另一个服务器复制数据时装载数据库:

shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name

可以用一个命令转储几个数据库:

shell> mysqldump ---database db_name1 [db_name2 ...] > my_databases.sql

如果你想要转储所有数据库,使用--all--database选项:

shell> mysqldump --all-databases > all_databases.sql

如果表保存在InnoDB存储引擎中,mysqldump提供了一种联机备份的途径(参见下面的命令)。该备份只需要在开始转储时对所有表进行全局读锁定(使用FLUSH TABLES WITH READ LOCK)。获得锁定后,读取二进制日志的相应内容并将锁释放。因此如果并且只有当发出FLUSH...时正执行一个长的更新语句,MySQL服务器才停止直到长语句结束,然后转储则释放锁。因此如果MySQL服务器只接收到短("短执行时间")的更新语句,即使有大量的语句,也不会注意到锁期间。

shell> mysqldump --all-databases --single-transaction > all_databases.sql

对于点对点恢复(也称为“前滚”,当你需要恢复旧的备份并重放该备份以后的更改时),循环二进制日志(参见5.11.3节,“二进制日志”)或至少知道转储对应的二进制日志内容很有用:

shell> mysqldump --all-databases --master-data=2 > all_databases.sql
shell> mysqldump --all-databases --flush-logs --master-data=2 > all_databases.sql

如果表保存在InnoDB存储引擎中,同时使用--master-data--single-transaction提供了一个很方便的方式来进行适合点对点恢复的联机备份。

关于备份的详细信息,参见5.9.1节,“数据库备份”

分享到:
评论

相关推荐

    mysql导出指定表指定数据

    mysql中通过执行命令导出指定表中指定的数据,欢迎下载.

    mysql导出指定数据或部份数据的方法

    在MySQL数据库管理中,有时我们需要导出特定的数据或者部分数据,而不是整个数据库。传统的`mysqldump`工具虽然强大,但并不适用于这种情况。本文将介绍三种方法来解决这一问题。 **方法一:使用INSERT INTO......

    shell脚本mysql导出指定表并分表存储

    mysql导出指定表并分表存储sql文件且压缩的shell脚本,数据库数据过大时,可以用于数据库备份

    用JAVA导出MYSQL的数据

    `mysqldump`是一个实用程序,它能备份MySQL数据库,生成包含创建数据库、表、视图等对象的SQL语句,以及填充这些对象的数据。在Windows系统中,确保MySQL的环境变量已经配置好,可以通过CMD进入命令行并输入`mysql`...

    MySql表结构导出到Word

    支持导出MySQL数据库表结构!! 运行环境:jdk8+,需要Java运行环境 执行命令:java -jar data_to_word-1.0-SNAPSHOT.jar

    mysql数据表导出为word文档工具

    MySQL 数据表导出为 Word 文档工具 MySQL 数据表导出为 Word 文档工具是软件开发中一个重要的工具,能够将 MySQL 数据库中的数据表导出为 Word 文档,使得数据库的记录和管理更加方便。 MySQL 数据库连接 在使用...

    mysql数据字典导出工具

    MySQL数据字典导出工具是一款高效实用的软件,专为数据库管理员和开发人员设计,用于轻松地导出MySQL数据库中的元数据,即数据字典。数据字典在数据库管理中扮演着至关重要的角色,它包含了关于数据库结构、表、列、...

    mysql数据导入导出

    这将会将该表的结构和数据一起导出到指定的 `.sql` 文件中。 ##### 3. 导出数据库结构 有时候可能只需要导出数据库的结构而不包含任何数据,可以使用 `-d` 参数实现: ```bash mysqldump -u 用户名 -p 密码 -d ...

    java实现mysql数据库的表导出到excel文件

    本文将详细讲解如何使用Java实现从MySQL数据库的表导出到Excel文件的过程,以及涉及到的关键技术和工具。 首先,我们需要了解的是Java与数据库交互的基础——JDBC(Java Database Connectivity)。JDBC是Java API,...

    MySql示例9:表数据的导出和导入.zip

    本示例重点讨论了如何在MySQL中进行表数据的导出和导入。 首先,我们来看数据导出。MySQL提供了多种导出数据的方式,最常用的是使用`mysqldump`工具。这个命令行实用程序可以创建SQL语句来重建整个数据库或特定的表...

    用NavicatforMySQL进行数据库的导出.pdf

    * 高效快速:Navicat for MySQL的导出功能可以快速导出大量数据,无需担心导出速度。 * 灵活多样:Navicat for MySQL支持多种文件格式和导出选项,满足不同的需求。 * 安全可靠:Navicat for MySQL的导出功能支持...

    MySQL-Front导出mysql数据库结构到pdf、html

    总之,MySQL-Front为MySQL数据库的管理和操作提供了便捷的方式,其导出功能使得数据库结构可以方便地以PDF和HTML形式共享,这对数据文档化和跨平台沟通具有重要意义。熟练掌握这些操作,将有助于提高数据库管理的...

    mysql导出到word格式表结构工具

    "mysql导出到word格式表结构工具"就是为此目的而设计的软件,它能够帮助用户快速便捷地将数据库的表结构导出为Word文档,便于进一步编辑和管理。 这个工具的核心功能包括: 1. 数据库连接:工具允许用户输入MySQL...

    详解MySQL导出指定表中的数据的实例

    详解MySQL导出指定表中的数据 要求: 1. 不导出创表的语句,因为表已经建好:默认会导出,先drop table然后create table; 2. 导出的insert语句加上ignore,允许重复执行:默认不会加上ignore; 3. insert语句中列...

    从mysql数据库把数据导出到excel

    这个命令会将`your_table`表中的所有数据导出到指定路径的CSV文件。 2. **使用MySQL Workbench**:这是一个图形化界面工具,提供数据导出功能。只需选择需要导出的数据库、表,然后设置导出格式为CSV或其他Excel...

    MySql练习6:科目表数据的导出和导入.zip

    本练习围绕“科目表数据”的导出和导入展开,旨在帮助用户熟悉MySQL的相关命令和流程。 首先,我们来讨论如何导出MySQL中的数据。在MySQL中,通常使用`mysqldump`工具进行数据的导出。假设我们有一个名为"subject...

    MySQL数据导入与导出

    `mysqldump`是MySQL自带的一个强大的备份工具,不仅可以导出表结构,还能同时导出数据,非常适用于数据迁移或备份场景。其基本语法如下: ```bash mysqldump [options] database [tables] ``` 例如,若想导出名为`...

    导出mysql表数据到本地CSV文件

    本文将深入探讨如何利用SQL语句将MySQL中的表数据导出到本地CSV(逗号分隔值)文件。 首先,CSV文件格式是一种通用的数据交换格式,广泛用于导入和导出数据,因为它可以在各种软件中轻松读取,如电子表格程序(如...

    MYSQL指定数据导出工具,游戏玩家数据导出工具

    MYSQL指定数据导出工具,游戏玩家数据导出工具 1.修改config中dumpConfig.properties源数据库配置 2.修改config中dumpConfig.properties目标数据库配置,并创建一个db.target.schema值名字的数据库,不创建工具会...

Global site tag (gtag.js) - Google Analytics