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

    技术2025-05-04  24

      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

     

     

    最新回复(0)