用SELECT... INTO OUTFILE语句导出MySQL数据的教程
表数据导出到一个文本文件最简单的方法是使用SELECT...INTOOUTFILE语句的查询结果直接导出到一个文件在服务器主机上。
导出数据的SELECT...INTOOUTFILE声明:
这句话的语法结合了常规的SELECTINTOOUTFILE文件名的末尾。默认的输出格式是相同的LOADDATA,所以下面的语句导出tutorials_tbl的表制表符分隔的,换行结尾的文件到/tmp/tutorials.txt:
mysql>SELECT*FROMtutorials_tbl ->INTOOUTFILE'/tmp/tutorials.txt';
也可以更改输出格式,使用选项来指示如何引用和分隔列和记录。CRLF终止线要导出tutorial_tbl的CSV格式的表格,使用这样的语句:
mysql>SELECT*FROMpasswdINTOOUTFILE'/tmp/tutorials.txt' ->FIELDSTERMINATEDBY','ENCLOSEDBY'"' ->LINESTERMINATEDBY'\r\n';
SELECT...INTOOUTFILE具有以下属性:
- 由MySQL服务器直接创建输出文件,这样的文件名应指定您希望在服务器主机上的文件将被写入。没有本地版本的LOADDATALOCAL版本的类似的语句。
- 必须要有MySQL的FILE权限才能执行的SELECT...INTO语句。
- 输出文件必须不存在。这可以防止MySQL从会破坏文件可能重要。
- 应该在服务器主机上或一些方法来检索文件从该主机的登录帐户。否则SELECT...INTOOUTFILE可能是没有价值的。
- 在Unix下,创造了世界可读的文件和所拥有的MySQL服务器。这意味着虽然就可以读取该文件,但是不能够删除它。
作为原始数据的导出表:
使用mysqldump程序复制或备份表和数据库。它可以写表输出的原始数据文件或为一组的INSERT语句重新创建该表中的记录。
转储一个表,必须指定一个数据文件-选项卡上的选项,表示想要的MySQL服务器写入文件所在的目录。
使用mysqldump程序复制或备份表和数据库。它可以写表输出的原始数据文件,或为一组的INSERT语句重新创建该表中的记录。
转储一个表,必须指定一个数据文件-选项卡上的选项,表示想要的MySQL服务器写入文件所在的目录。
$mysqldump-uroot-p--no-create-info\ --tab=/tmpTUTORIALStutorials_tbl password******
在SQL格式导出表的内容或定义:
一个表中的SQL格式导出到一个文件,使用这样的命令:
$mysqldump-uroot-pTUTORIALStutorials_tbl>dump.txt password******
这将创建文件的内容如下:
--MySQLdump8.23 -- --Host:localhostDatabase:TUTORIALS --------------------------------------------------------- --Serverversion3.23.58 -- --Tablestructurefortable`tutorials_tbl` -- CREATETABLEtutorials_tbl( tutorial_idint(11)NOTNULLauto_increment, tutorial_titlevarchar(100)NOTNULLdefault'', tutorial_authorvarchar(40)NOTNULLdefault'', submission_datedatedefaultNULL, PRIMARYKEY(tutorial_id), UNIQUEKEYAUTHOR_INDEX(tutorial_author) )TYPE=InnoDB; -- --Dumpingdatafortable`tutorials_tbl` -- INSERTINTOtutorials_tbl VALUES(1,'LearnPHP','JohnPoul','2007-05-24'); INSERTINTOtutorials_tbl VALUES(2,'LearnMySQL','AbdulS','2007-05-24'); INSERTINTOtutorials_tbl VALUES(3,'JAVATutorial','Sanjay','2007-05-06');
要转储多个表,他们的名字所有的数据库名称参数。要转储整个数据库,不指定任何表后的数据库,如下所示:
$mysqldump-uroot-pTUTORIALS>database_dump.txt password******
所有可用的数据库备份主机上使用以下命令:
$mysqldump-uroot-p--all-databases>database_dump.txt password******
在SQL格式导出表的内容或定义:
这些方法可用于实现数据库的备份策略。
表或数据库复制到另一台主机:
如果要复制的表或数据库从一个MySQL服务器,然后使用mysqldump数据库名和表名。
在源主机上运行以下命令。这将转储完整的数据库到dump.txt文件:
$mysqldump-uroot-pdatabase_nametable_name>dump.txt password*****
复制完整的数据库,而不使用一个特定的表名称,如上面所解释。
现在,FTPdump.txt文件在另一台主机上,使用下面的命令。在运行此命令之前,请确保已创建目标服务器上的数据库名称。
$mysql-uroot-pdatabase_name<dump.txt password*****
另一种方法,而无需使用一个中间文件来完成,mysqldump输出直接通过网络发送到远程的MySQL服务器。如果可以连接到两台服务器的cookbook数据库所在的主机上,使用以下命令:
$mysqldump-uroot-pdatabase_name\ states|mysql-hother-host.comdatabase_name
命令mysqldump的一半连接到本地服务器,并写入转储输出管道。MySQL的一半的命令连接到远程MySQL服务器otherhost.com。它读取输入管和其他host.com服务器发送的每个语句。