四十、MySQL 导出数据

四十、MySQL 导出数据
云少四十、MySQL 导出数据
MySQL 导出数据有两种方法
1、 使用 SELECT...INTO OUTFILE
语句来简单的导出数据到某个文件中
2、 使用 mysqldump
准备测试数据
可以在 mysql>
命令行中运行以下语句填充范例数据
1 | DROP TABLE IF EXISTS `tbl_language`; |
tbl_language
表中的数据如下
1 | +----+--------+----------------------------+------------+ |
tbl_rank
表中的数据如下
1 | +----+--------+---------+------+---------+ |
SELECT ... INTO OUTFILE
语句导出数据
我们可以使用下面的语句将 tbl_language
表导出到 d:/tbl_language.sql
文件中
1 | SELECT * FROM tbl_language INTO OUTFILE 'd:/tbl_language.sql'; |
如果想到处其它格式,比如 .csv
文件,那么可以使用下面的关键字设定格式
1 | FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n'; |
关键字 | 说明 |
---|---|
FIELDS TERMINATED BY | 设置字段数据间的分隔符 |
ENCLOSED BY | 设置每个字段数据使用 " 引起来 |
LINES TERMINATED BY | 设定每行数据间的分隔符 |
例如下面的语句将 tbl_language
导出到 d:/tbl_language.csv
1 | SELECT * FROM tbl_language INTO OUTFILE 'd:/tbl_language.csv' |
SELECT … INTO OUTFILE 语句属性
1、 LOAD DATA INFILE
是 SELECT ... INTO OUTFILE
的逆操作
1 | 为了将一个数据库的数据写入一个文件,使用 `SELECT ... INTO OUTFILE` |
2、 SELECT...INTO OUTFILE 'file_name'
可以把被选择的行写入一个文件中
1 | 该文件被创建到服务器主机上,因此您必须拥有FILE权限,才能使用此语法 |
3、 输出不能是一个已存在的文件,防止文件数据被篡改
mysqldump 导出表作为原始数据
mysqldump
是 MySQL
用于转存储数据库的实用程序
它主要产生一个 SQL 脚本,其中包含从头重新创建数据库所必需的命令 CREATE TABLE INSERT
等
mysqldump
导出数据需要使用 --tab
选项来指定导出文件指定的目录,该目标必须是可写的
下面的命令用于将 souyunku
数据库中的 tbl_language
导出到文件 d:/tbl_language2.sql
1 | $ mysqldump -u root -p --no-create-info --tab=d:/tbl_language2.sql test2 tbl_language |
导出 SQL 格式的数据
1 | mysqldump` 导出 SQL 格式的数据到当前文件夹下的 `tbl_language.sql |
打开文件 tbl_language.sql
可以看到下面的内容
1 | -- Host: localhost Database: test2 |
如果需要导出整个数据库的数据,可以使用以下命令
1 | mysqldump -u root -p test2 > souyunku.sql |
如果需要备份所有数据库,可以使用以下命令:
1 | mysqldump -u root -p --all-databases > all_database.sql |
如果只想导出单张表的结构,可以加上 -d databasename tablename
参数
1 | mysqldump -u root -p -d test2 tbl_language > tbl_language.sql |
如果只想导出某个数据库的所有表结构,可以加上 -d databasename
参数
1 | mysqldump -u root -p -d test2 > test2.sql |
如果只想导出所有数据库的所有表结构,可以加上 -d
参数
1 | mysqldump -u root -p --all-databases -d > all_database_c.sql |
将数据表及数据库拷贝至其它主机
在 Linux
系统或者 Mac OS
系统上,如果需要将将数据表及数据库拷贝至其它主机,可以使用管道操作符 |
1 | mysqldump -u root -p test2 | mysql -h other-host.com database_name |