MySQL数据导入导出方法和工具介绍(3)

2008-02-23 07:43:23来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

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选项

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

-for -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 :

假如您觉得mysqldump工具不够酷,就使用SELECT INTO OUTFILE吧, MySQL同样提供一个跟LOAD DATA INFILE命令有相反作用的命令,这就是SELECT INTO OUTFILE 命令,这两个命令有很多的相似之处。首先,他们有任何的选项几乎相同。现在您需要完成前面用mysqldump完成的功能,能够依照下面的步骤进行操作:

1. 确保mysqld进程(服务)已在运行

2. cd /usr/local/mysql

3. bin/mysqladmin ping ;// 假如这个句子通但是,能够用这个:mysqladmin -u root -p ping mysqladmin ping用于检测mysqld的状态,is alive说明正在运行,出错则可能需要用户名和密码。

4. 启动MySQL 监听程式.

5. bin/mysql –p Meet_A_Geek;// 进入mysql命令行,并且打开数据库Meet_A_Geek,需要输入密码

6. 在命令行中,输入一下命令:

SELECT * INTO OUTFILE /home/mark/Orders.txt

FIELDS

TERMINATED BY = ,

FROM Orders

WHERE Order_Date >= 2000-01-01

在您按了Return(回车)之后,文档就创建了。这个句子就像一个规则的SELECT语句,只是把想屏幕的输出重定向到了文档中。这意味这您能够使用JOIN来实现多表的高级查询。这个特点也能够被用作一个报表产生器。

比方说,您能够组合这一章中讨论的方法来产生一个很有趣的查询,试试这个:

在mysql目录建立一个名为Report_G.rpt 的文本文档,加入下面的行:

USE Meet_A_Geek;

INSERT INTO Customers (Customer_ID, Last_Name, First_Name)

VALUES (NULL, "Kinnard", "Vicky");

INSERT INTO Customers (Customer_ID, Last_Name, First_Name)

VALUES (NULL, "Kinnard", "Steven");

INSERT INTO Customers (Customer_ID, Last_Name, First_Name)

VALUES (NULL, "Brown", "Sam");

SELECT Last_Name INTO OUTFILE /home/mark/Report.rpt

FROM Customers WHERE Customer_ID > 1;

然后确认 mysql进程在运行,并且您在mysql目录中, 输入下面的命令:bin/mysql < Report_G.rpt检查您命名作为输出的文档,这个文档将会包含任何您在Customers表中输入的顾客的姓。 如您所见,您能够使用今天学到的导入/导出(import/export)的方法来帮助得到报表。


标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 如何恢复MYSQL的ROOT口令

下一篇: 如何为用户配置密码(MYSQL)