将表数据导出到文本文件的最简单方法是使用 SELECT ... INTO OUTFILE 语句将查询结果直接导出到服务器主机上的文件中.
此语句的语法将常规 SELECT 命令与
mysql> SELECT * FROM tutorials_tbl -> INTO OUTFILE '/tmp/tutorials.txt';
您可以使用各种选项更改输出格式,以指示如何引用和分隔列和记录.要使用CRLF终止的行以CSV格式导出tutorial_tbl表,请使用以下代码.
mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/tutorials.txt' -> FIELDS TERMINATED BY ',' ENCLOSED BY '"' -> LINES TERMINATED BY '\r\n';
SELECT ... INTO OUTFILE 具有以下属性 :
输出文件直接创建由MySQL服务器,因此文件名应指明您希望在服务器主机上写入文件的位置.没有LOCAL版本的语句类似于 LOAD DATA 的 LOCAL 版本.
您必须具有 MySQL FILE 权限才能执行 SELECT ... INTO 声明.
输出文件必须不存在.这可以防止MySQL破坏可能很重要的文件.
您应该在服务器主机上有一个登录帐户,或者某种方式从该主机检索文件.否则, SELECT ... INTO OUTFILE 命令很可能是对你没有任何价值.
在UNIX下,文件被创建 world可读并由MySQL服务器拥有.这意味着虽然您将能够读取该文件,但您可能无法将其删除.
mysqldump 程序用于复制或备份表和数据库.它可以将表输出写为原始数据文件或作为一组 INSERT 语句来重新创建表中的记录.
要将表转储为数据文件,必须指定 - tab 选项,该选项指示您希望MySQL服务器写入文件的目录.
例如,要将 tutorials_tbl 表从 TUTORIALS 数据库转储到/tmp 目录中的文件,请使用如下所示的命令.
$ mysqldump -u root -p --no-create-info \ --tab=/tmp tutorials tutorials_tbl password ******
导出a将SQL格式的表格转换为文件,使用下面显示的命令.
$ mysqldump -u root -p TUTORIALS tutorials_tbl > dump.txt password ******
这将是一个包含如下所示内容的创建文件.
-- MySQL dump 8.23 -- -- Host: localhost Database: TUTORIALS --------------------------------------------------------- -- Server version 3.23.58 -- -- Table structure for table `tutorials_tbl` -- CREATE TABLE tutorials_tbl ( tutorial_id int(11) NOT NULL auto_increment, tutorial_title varchar(100) NOT NULL default '', tutorial_author varchar(40) NOT NULL default '', submission_date date default NULL, PRIMARY KEY (tutorial_id), UNIQUE KEY AUTHOR_INDEX (tutorial_author) ) TYPE = MyISAM; -- -- Dumping data for table `tutorials_tbl` -- INSERT INTO tutorials_tbl VALUES (1,'Learn PHP','John Poul','2007-05-24'); INSERT INTO tutorials_tbl VALUES (2,'Learn MySQL','Abdul S','2007-05-24'); INSERT INTO tutorials_tbl VALUES (3,'JAVA Tutorial','Sanjay','2007-05-06');
要转储多个表,请将它们全部命名,后跟数据库名称参数.要转储整个数据库,请不要在数据库之后命名任何表,如以下代码块所示.
$ mysqldump -u root -p TUTORIALS > database_dump.txt password ******
要备份主机上可用的所有数据库,请使用以下代码.
$ mysqldump -u root -p --all-databases > database_dump.txtMySQL 3.23.12版本中提供了--all-databases选项.此方法可用于实现数据库备份策略.
如果要从中复制表或数据库一个MySQL服务器到另一个,然后使用带有数据库名称和表名的 mysqldump .
在源主机上运行以下命令.这会将完整的数据库转储到 dump.txt 文件中.
$ mysqldump -u root -p database_name table_name > dump.txt如上所述,您可以在不使用特定表名的情况下复制完整数据库.
现在,ftp dump.txt文件在另一台主机上,并使用以下命令.在运行此命令之前,请确保已在目标服务器上创建了database_name.
$ mysql -u root -p database_name < dump.txt password *****
在不使用中间文件的情况下实现此目的的另一种方法是直接发送mysqldump的输出通过网络到远程MySQL服务器.如果您可以从源数据库所在的主机连接到这两个服务器,请使用以下命令(确保您在两个服务器上都有访问权限.)
$ mysqldump -u root -p database_name \ | mysql -h other-host.com database_name
在mysqldump中,一半命令连接到本地服务器并将转储输出写入管道.该命令的剩余一半连接到otherhost.com上的远程MySQL服务器.它读取输入管道并将每个语句发送到otherhost.com服务器.