关于MySQL中的mysqldump饬令的应用

来历:zhoubin_java的 Blog 作者:zhoubin_java的 Blog




">  您可以看到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''''
  
  在你按了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)的要领来拯救失失报表。




版权声明: 原创作品,答理转载,转载时请务必以超链接方式标明文章 原始情由 、作者信息和本声明。不然将深究规律责任。

原文地址:https://www.cnblogs.com/zgqjymx/p/1975709.html