最近在搞mysql,因为在命令行下操作,在备份时遇到了mysqldump,所以记录一下相关用法,也都是在其他地方搜刮来的。

本来我以为这个mysqldump是mysql控制台程序内部的一个命令,结果进入mysql后试了几次几次都不行,后来没进mysql,直接使用才发现原来它是独立的一个命令,我的是在D:\Program Files\MySQL\MySQL Server 5.1\bin目录下(如果命令行里找不到的话就设置一下环境变量吧,或者到bin目录下再使用)。

mysqldump可以把整个数据库装载到一个单独的文本文件中。这个文件包含有所有重建您的数据库所需要的SQL命令。

这个命令取得所有的模式(Schema,后面有解释)并且将其转换成DDL语法(CREATE语句,即数据库定义语句);取得所有的数据,并且从这些数据中创建INSERT语句。这个工具将您的数据库中所有的设计倒转(这句我也不太清楚什么意思,个人理解就是上面说的从模式到DDL,从数据到INSERT吧)。

因为所有的东西都被包含到了一个文本文件中。这个文本文件可以用一个简单的批处理和一个合适SQL语句导回到MySQL中。

因此,如果您想装载整个数据库jforum的内容到一个文件中,可以使用下面的命令:

mysqldump -uroot –p1234 jforum > jforum_Dump_File.txt

这个语句也允许您指定一个表进行dump(转储)。如果您只是希望把数据库jforum中的表Orders中的整个内容导出到一个文件,可以使用下面的命令:

mysqldump -uroot –p1234 jforum Orders > jforum_Orders.txt (‘>'就是个重定向啦,如果没有的话就全部显示在界面上了)

这个非常的灵活,您甚至可以使用WHERE从句来选择您需要的记录导出到文件中。要达到这样的目的,可以使用类似于下面的命令:

mysqldump -uroot –p1234 –where="Order_ID > 2000" jforum Orders > Special_Dump.txt

mysqldump工具有大量的选项,部分选项如下表:

选项/Option

作用/Action Performed

--add-drop-table

这个选项将会在每一个表的前面加上DROP TABLE IF EXISTS语句,

这样可以保证导回MySQL数据库的时候不会出错,

因为每次导回的时候,都会首先检查表是否存在,存在就删除。

--add-locks

这个选项会在INSERT语句中捆上一个LOCK TABLE和UNLOCK TABLE语句。

这就防止在这些记录被再次导入数据库时其他用户对表进行的操作。

-c or - complete_insert

这个选项使得mysqldump命令给每一个产生INSERT语句加上列(field)的名字。

当把数据导出导另外一个数据库时这个选项很有用。

--delayed-insert

在INSERT命令中加入DELAY选项。

-F or -flush-logs

使用这个选项,在执行导出之前将会刷新MySQL服务器的log。

--full

这个选项把附加信息也加到CREATE TABLE的语句中。

-l or -lock-tables

使用这个选项,导出表的时候服务器将会给表加锁。

-t or -no-create- info

这个选项使的mysqldump命令不创建CREATE TABLE语句,

这个选项在您只需要数据而不需要DDL(数据库定义语句)时很方便。

-d or -no-data

这个选项使的mysqldump命令不创建INSERT语句。

--opt

此选项将打开所有会提高文件导出速度和创造一个可以更快导入的文件的选项。

-q or -quick

这个选项使得MySQL不会把整个导出的内容读入内存再执行导出,

而是在读到的时候就写入导文件中。

-T path or -tab = path

这个选项将会创建两个文件,一个文件包含DDL语句或者表创建语句,另一个文件包含数据。

DDL文件被命名为table_name.sql,数据文件被命名为table_name.txt.路径名是存放这两个文件的目录。

目录必须已经存在,并且命令的使用者有对文件的特权。

-w "WHERE Clause"

or -where = "Where clause "

如前面所讲的,您可以使用这一选项来过筛选将要放到 导出文件的数据。

-p or --password[=password]

数据库密码

-u or ==user=name

数据库用户名

更多内容可以通过--help查看,实在太多,我就不一一列举了。

schema:模式

The set of statements, expressed in data definition language, that completely describe the structure of a data base. 

一组以数据定义语言来表达的语句集,该语句集完整地描述了数据库的结构。