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

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

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

导出数据的方法:Methods of Exporting Data

您能够看到MySQL有很多能够导入数据的方法,然而这些只是数据传输中的一半。另外的一般是从MySQL数据库中导出数据。有许多的原因我们需要导出数据。一个重要的原因是用于备份数据库。数据的造价常常是昂贵的,需要谨慎处理他们。经常地备份能够帮助防止宝贵数据地丢失;另外一个原因是,也许您希望导出数据来共享。 在这个信息技术不断成长的世界中,共享数据变得越来越常见。

比方说Macmillan USA维护护着一个将要出版的书籍的大型数据库。这个数据库在许多书店之间共享,这样他们就知道哪些书将会很快出版。医院越来越走向采用无纸病历记录,这样这些病历能够随时跟着您。世界变得越来越小,信息也被共享得越来越多。有很多中导出数据得方法,他们都跟导入数据很相似。因为,毕竟,这些都只是一种透视得方式。从数据库导出的数据就是从另一端导入的数据。这里我们并不讨论其他的数据库各种各样的导出数据的方法,您将学会如何用MySQL来实现数据导出。

使用mysqldump:

(mysqldump命令位于mysql/bin/目录中)
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 TABLE和UNLOCK
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 :
假如您觉得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'

标签:

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

上一篇: MySQL数据导入导出方法和工具(1)

下一篇: MySQL 如何对抗解密高手