首页 »数据库 » mysqldump命令:MySQL中mysqldump命令详解 »正文
mysqldump命令:MySQL中mysqldump命令详解
来源: 发布时间:星期三, 2009年9月2日 浏览:7次 评论:0
mysqldump工具很多方面类似相反作用 工具mysqlimport 它们有 些同样 选项 但mysqldump能够做更多 事情![](/icons/26362dou2.gif) 技术不断成长 世界中 共享数据变得越来越常见![](/icons/26362dou2.gif)
比方说Macmillan USA维护护着 个将要出版 书籍 大型数据库 这个数据库在许多书店的间共享 这样他们就知道哪些书将会很快出版 医院越来越走向采用无纸病历记录 这样这些病历可以随时跟着你 世界变得越来越小 信息也被共享得越来越多 有很多中导出数据得思路方法 它们都跟导入数据很相似![](/icons/26362dou2.gif) ![](/icons/26362yinwei.gif) 毕竟 这些都只是 种透视得方式 从数据库导出 数据就是从另 端导入 数据 这里我们并不讨论其他 数据库各种各样 导出数据 思路方法 您将学会如何用MySQL来实现数据导出![](/icons/26362dou2.gif)
使用mysqldump:
(mysqldump命令位于mysql/bin/目录中)
mysqldump工具很多方面类似相反作用 工具mysqlimport 它们有 些同样 选项 但mysqldump能够做更多 事情 它可以把整个数据库装载到 个单独 文本文件中 这个文件包含有所有重建您 数据库所需要 SQL命令 这个命令取得所有 模式(Schema 后面有解释)并且将其转换成DDL语法(CREATE语句 即数据库定义语句) 取得所有 数据 并且从这些数据中创建INSERT语句 这个工具将您 数据库中所有 设计倒转![](/icons/26362dou2.gif) 所有 东西都被包含到了 个文本文件中 这个文本文件可以用 个简单 批处理和 个合适SQL语句导回到MySQL中 这个工具令人难以置信地简单而快速 决不会有半点让人头疼地地方![](/icons/26362dou2.gif)
因此 如果您像装载整个数据库Meet_A_Geek 内容到 个文件中 可以使用下面 命令:
bin/mysqldump –p Meet_A_Geek > MeetAGeek_Dump_File.txtbin/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从句来选择您需要 记录导出到文件中 要达到这样 目![](/icons/26362de.gif) 可以使用类似于下面 命令:
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数据库 时候不会出错![](/icons/26362dou.gif) 每次导回 时候 都会首先检查表是否存在 存在就删除
--add-locks
这个选项会在INSERT语句中捆上 个LOCK TABLE和UNLOCK TABLE语句 这就防止在这些记录被再次导入数据库时其他用户对表进行 操作
-c or - complete_insert
这个选项使得mysqldump命令给每 个产生INSERT语句加上列(field) 名字 当把数据导出导另外 个数据库时这个选项很有用![](/icons/26362dou2.gif)
--delayed-insert 在INSERT命令中加入DELAY选项
-F or -flush-logs 使用这个选项 在执行导出的前将会刷新MySQL服务器 log.
-f or -force使用这个选项 即使有 发生 仍然继续导出
--full 这个选项把附加信息也加到CREATE TABLE 语句中
-l or -lock-tables 使用这个选项 导出表 时候服务器将会给表加锁![](/icons/26362dou2.gif)
-t or -no-create-info
这个选项使 mysqldump命令不创建CREATE TABLE语句 这个选项在您只需要数据而不需要DDL(数据库定义语句)时很方便![](/icons/26362dou2.gif)
-d or -no-data这个选项使 mysqldump命令不创建INSERT语句![](/icons/26362dou2.gif)
在您只需要DDL语句时 可以使用这个选项![](/icons/26362dou2.gif)
--opt 此选项将打开所有会提高文件导出速度和创造 个可以更快导入 文件 选项![](/icons/26362dou2.gif)
-q or -quick 这个选项使得MySQL不会把整个导出 内容读入内存再执行导出 而是在读到 时候就写入导文件中![](/icons/26362dou2.gif)
-Tpathor -tab = path 这个选项将会创建两个文件![](/icons/26362dou.gif) 个文件包含DDL语句或者表创建语句 另 个文件包含数据 DDL文件被命名为table_name.sql,数据文件被命名为table_name.txt.路径名是存放这两个文件 目录 目录必须已经存在 并且命令 使用者有对文件 特权![](/icons/26362dou2.gif)
-w "WHERE Clause" or -where = "Where clause "
如前面所讲![](/icons/26362de.gif) 您可以使用这 选项来过筛选将要放到 导出文件 数据![](/icons/26362dou2.gif) 假定您需要为 个表单中要用到 帐号建立 个文件 经理要看今年(2004年)所有 订单(Orders) 它们并不对DDL感兴趣 并且需要文件有逗号分隔![](/icons/26362dou.gif) 这样就很容易导入到Excel中 为了完成这个人物 您可以使用下面 句子:
bin/mysqldump –p –where "Order_Date >='2000-01-01'"
–tab = /home/mark –no-create-info –fields-terminated-by=, Meet_A_Geek Orders
这将会得到您想要 结果![](/icons/26362dou2.gif)
schema:模式
The of statements, expressed indatadefinition language, that completely describe the structure of a data base.
组以数据定义语言来表达 语句集,该语句集完整地描述了数据库 结构![](/icons/26362dou2.gif)
SELECT INTO OUTFILE :
如果您觉得mysqldump工具不够酷 就使用SELECT INTO OUTFILE吧, MySQL同样提供 个跟LOAD DATA INFILE命令有相反作用 命令 这就是SELECT INTO OUTFILE 命令 这两个命令有很多 相似的处 首先 它们有所有 选项几乎相同 现在您需要完成前面用mysqldump完成 功能 可以依照下面 步骤进行操作:
1. 确保mysqld进程(服务)已经在运行
2. cd /usr/local/mysql
3. bin/mysqladminping;// 如果这个句子通不过 可以用这个:mysqladmin -u root -p ping
mysqladmin ping用于检测mysqld 状态 is alive介绍说明正在运行 出错则可能需要用户名和密码![](/icons/26362dou2.gif)
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来实现多表 高级查询 这个特点也可以被用作 个报表产生器![](/icons/26362dou2.gif)
比方说 您可以组合这 章中讨论 思路方法来产生 个非常有趣 查询 试试这个:
在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) 思路方法来帮助得到报表![](/icons/26362dou2.gif)
相关文章
读者评论
发表评论
|
|