以下实例中咱们将数据表 runoob_tbl 数据导出到 /tmp/runoob.txt 文件中:
mysql> SELECT * FROM runoob_tbl
-> INTO OUTFILE '/tmp/runoob.txt';
你能够经过指令选项来设置数据输出的指定格局,以下实例为导出 CSV 格局:
mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/runoob.txt'
-> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
-> LINES TERMINATED BY '\r\n';
鄙人面的比如中,生成一个文件,各值用逗号离隔。这种格局能够被许多程序运用。
SELECT a,b,a+b INTO OUTFILE '/tmp/result.text'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM test_table;
SELECT ... INTO OUTFILE 句子有以下特点:
LOAD DATA INFILE是SELECT ... INTO OUTFILE的逆操作,SELECT句法。为了将一个数据库的数据写入一个文件,运用SELECT ... INTO OUTFILE,为了将文件读回数据库,运用LOAD DATA INFILE。
SELECT...INTO OUTFILE 'file_name'方式的SELECT能够把被挑选的行写入一个文件中。该文件被创立到服务器主机上,因而您有必要具有FILE权限,才干运用此语法。
输出不能是一个已存在的文件。避免文件数据被篡改。
你需求有一个登陆服务器的账号来检索文件。不然 SELECT ... INTO OUTFILE 不会起任何效果。
在UNIX中,该文件被创立后是可读的,权限由MySQL服务器所具有。这意味着,尽管你就能够读取该文件,但或许无法将其删去。
导出表作为原始数据
mysqldump 是 mysql 用于转存储数据库的实用程序。它首要发生一个 SQL 脚本,其间包括从头从头创立数据库所必需的指令 CREATE TABLE INSERT 等。
运用 mysqldump 导出数据需求运用 --tab 选项来指定导出文件指定的目录,该方针有必要是可写的。
以下实例将数据表 runoob_tbl 导出到 /tmp 目录中:
$ mysqldump -u root -p --no-create-info \
--tab=/tmp RUNOOB runoob_tbl
password ******
导出 SQL 格局的数据
导出 SQL 格局的数据到指定文件,如下所示:
$ mysqldump -u root -p RUNOOB runoob_tbl > dump.txt
password ******
以上指令创立的文件内容如下:
-- MySQL dump 8.23
--
-- Host: localhost Database: RUNOOB
---------------------------------------------------------
-- Server version 3.23.58
--
-- Table structure for table `runoob_tbl`
--
CREATE TABLE runoob_tbl (
runoob_id int(11) NOT NULL auto_increment,
runoob_title varchar(100) NOT NULL default '',
runoob_author varchar(40) NOT NULL default '',
submission_date date default NULL,
PRIMARY KEY (runoob_id),
UNIQUE KEY AUTHOR_INDEX (runoob_author)
) TYPE=MyISAM;
--
-- Dumping data for table `runoob_tbl`
--
INSERT INTO runoob_tbl
VALUES (1,'Learn PHP','John Poul','2007-05-24');
INSERT INTO runoob_tbl
VALUES (2,'Learn MySQL','Abdul S','2007-05-24');
INSERT INTO runoob_tbl
VALUES (3,'JAVA Tutorial','Sanjay','2007-05-06');
假如你需求导出整个数据库的数据,能够运用以下指令:
$ mysqldump -u root -p RUNOOB > database_dump.txt
password ******
假如需求备份一切数据库,能够运用以下指令:
$ mysqldump -u root -p --all-databases > database_dump.txt
password ******
--all-databases 选项在 MySQL 3.23.12 及今后版别参加。
该办法可用于完成数据库的备份战略。
将数据表及数据库复制至其他主机
假如你需求将数据复制至其他的 MySQL 服务器上, 你能够在 mysqldump 指令中指定数据库名及数据表。
在源主机上履行以下指令,将数据备份至 dump.txt 文件中:
$ mysqldump -u root -p database_name table_name > dump.txt
password *****
假如完好备份数据库,则无需运用特定的表称号。
假如你需求将备份的数据库导入到MySQL服务器中,能够运用以下指令,运用以下指令你需求承认数据库现已创立:
$ mysql -u root -p database_name < dump.txt
password *****
你也能够运用以下指令将导出的数据直接导入到长途的服务器上,但请保证两台服务器是相通的,是能够彼此拜访的:
$ mysqldump -u root -p database_name \
| mysql -h other-host.com database_name
以上指令中运用了管道来将导出的数据导入到指定的长途主机上。