使用MySQLDump来备份MySQL数据库及常用的导入导出语句

来源:互联网 发布:android调用js方法失败 编辑:程序博客网 时间:2024/05/22 01:35

  mysqldumpmysql用于数据用程序。它主要生一个SQL脚本,其中包含从重新建数据所必需的命令CREATE TABLE INSERT等。

  mysqldump工具很多方面似相反作用的工具mysqlimport。它有一些同选项。但mysqldump做更多的事情。它可以把整个数据到一个独的文本文件中。个文件包含有所有重建您的数据所需要的SQL命令。个命令取得所有的模式(Schema,后面有解)并且将其转换DDL法(CREATE句,即数据义语句),取得所有的数据,并且从些数据中INSERT句。个工具将您的数据中所有的设计。因所有的西都被包含到了一个文本文件中。个文本文件可以用一个简单的批理和一个合适SQL回到MySQL中。个工具令人以置信地简单而快速。决不会有半点疼地地方。

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

  bin/mysqldump –p Meet_A_Geek > MeetAGeek_Dump_File.txt

  句也允您指定一个表dump(//?)。如果您只是希望把数据Meet_A_Geek中的表Orders中的整个内容出到一个文件,可以使用下面的命令:

  bin/mysqldump –p Meet_A_Geek Orders >MeetAGeek_Orders.txt

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

  bin/mysqldump –p –where="Order_ID > 2000" Meet_A_Geek Orders > Special_Dump.txt

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

  选项/Option 作用/Action Performed

  --add-drop-table

  选项将会在一个表的前面加上DROP TABLE IF EXISTS句,这样可以保证导MySQL数据候不会出,因为每回的候,都会首先检查表是否存在,存在就

  --add-locks

  选项会在INSERT句中捆上一个LOCK TABLEUNLOCK TABLE句。就防止在记录被再次入数据库时其他用户对行的操作

  -c or - complete_insert

  选项使得mysqldump命令给每一个INSERT句加上列(field)的名字。当把数据另外一个数据库时这选项很有用。

  --delayed-insert INSERT命令中加入DELAY选项

  -F or -flush-logs 使用选项,在出之前将会刷新MySQL器的log.

  -f or -force 使用选项,即使有错误发生,仍然继续导

  --full 选项把附加信息也加到CREATE TABLE句中

  -l or -lock-tables 使用选项出表的候服器将会表加

  -t or -no-create- info

  选项使的mysqldump命令不CREATE TABLE句,选项在您只需要数据而不需要DDL(数据义语句)很方便。

  -d or -no-data 选项使的mysqldump命令不INSERT句。

  在您只需要DDL,可以使用选项

  --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 "

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

  假定您需要一个表中要用到的号建立一个文件,理要看今年(2004年)所有的订单Orders),它并不DDL趣,并且需要文件有逗号分隔,因为这样就很容易入到Excel中。 了完成个人物,您可以使用下面的句子:

  bin/mysqldump –p –where "Order_Date >='2000-01-01'"

  –tab = /home/mark –no-create-info –fields-terminated-by=, Meet_A_Geek Orders

  将会得到您想要的果。

  schema:模式

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

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

  SELECT INTO OUTFILE

 

MYSQLMYSQLDUMP命令

1.mysqldumpMySQL数据库进行数据份与恢

  下面假tm个数据

  Shell>mysqldump -uroot –p123456 tm > tm_050519.sql

  这时可以利用gzip压缩数据,命令如下:

  Shell>mysqldump -uroot -p123456 tm | gzip > tm_050519.sql.gz

  恢数据:

  Shell>mysql -uroot -p123456 tm < tm_050519.sql

  从压缩文件直接恢

  Shell>gzip < tm_050519.sql.gz | mysql -uroot -p123456 tm

  2.于使用mysqldump的一些参数选项

  (1)直接使用mysqldump -uroot -pxxxx tetratest > "d:/data1.sql"

  出数据,没有建库语句,这时你可以手动创建一个,然后使用:

  mysql -uroot -pabcd mydatabase < "d:/data1.sql",即将一个数据到一个不同名称的数据下。同这种情况下,存储过程及函数并没有转储到文件中。

  (2)如果你未使用--quick或者--opt选项,那mysqldump将在转储结果之前把全部内容入到内存中。在你转储大数据量的数据库时将会有些问题该选项是打的,但可以使用--skip-opt关闭它。

  (3)使用--skip-comments可以去掉出文件中的注释语

  (4)使用--compact选项可以只出最重要的句,而不出注除表句等等

  (5)使用--database-B选项,可以转储多个数据,在选项名后的参数都被数据

  mysqldump -uroot -paaa --database db1 db2 >"d:/mydata.sql",使用参数会使用出文件中增加句。如不带该选项第二个参数将被表名,即:mysqldump -uroot -paaa my1 mytable1 >"d:/mydata.sql",将出表mytable1构及数据。

  (6)--tables ,在此选项之后的参数都被表名。

  (7)--no-create-db

  (8)--no-create-info

  (9)--no-data

  (10)--routines, -R 将使存储过程、函数也转储到文件中来。

  (更多参考MySQL手册)

 

常用举例

导出数据库

1            出数据表定,不出表数据。(判断同名的表存在则先删除,带字段和表的注释,包含所有表,不带存储过程和自定义函数)
/MySQL Server 5.1/bin>mysqldump -uroot -p123456 -d test > d:/test.sql

2            出数据表定,不出表数据。(判断同名的表存在则先删除,带字段和表的注释,指定表table1,不带存储过程和自定义函数)
/MySQL Server 5.1/bin>mysqldump -uroot -p123456 -d test –tables table1 > d:/test.sql

3            出数据表定,不出表数据。(判断同名的表存在则先删除,带字段和表的注释,包含所有表,带存储过程和自定义函数)
/MySQL Server 5.1/bin>mysqldump -uroot -p123456 -d -R test > d:/test.sql

4            出数据表定,不出表数据。(判断同名的表存在则先删除,带字段和表的注释,指定表table1,带存储过程和自定义函数)
/MySQL Server 5.1/bin>mysqldump -uroot -p123456 -d -R test –tables table1 > d:/test.sql

5            出数据,不出数据表定(insert数据前后分别锁定/解锁表,包含所有表)

/MySQL Server 5.1/bin>mysqldump -uroot -p123456 -t -q test > d:/test.sql

6            出数据,不出数据表定(insert数据前后分别锁定/解锁表,指定表table1)

/MySQL Server 5.1/bin>mysqldump -uroot -p123456 -t -q test -tables table1 > d:/test.sql

7            出数据,不出数据表定(insert数据前后分别锁定/解锁表,指定表table1中满足特定条件的数据)

/MySQL Server 5.1/bin>mysqldump -uroot -p123456 -t -q test --databases --tables table1 --where "ID<3" > d:/test.sql

 

导入数据库

/MySQL Server 5.1/bin>mysql -uroot -p1 test<d:/test.sql