除了整库备份与恢复,实际工作中也经常需要导出或导入单张表的数据,例如导出报表、做数据交换、迁移部分数据等。
可以使用 SELECT ... INTO OUTFILE 把查询结果导出为文本文件:
SELECT id, name, mobile
INTO OUTFILE '/tmp/user.txt'
FROM user;这种方式适合:
- 导出查询结果
- 生成文本报表
- 向外部系统传输数据
如果要导出整张表结构和数据,也可以使用 mysqldump:
mysqldump -u root -p test user > user.sql这会导出一份可用于恢复的 SQL 文件。
在命令行环境中,也可以结合查询和重定向导出结果:
mysql -u root -p -e "SELECT * FROM user" test > user.txt这种方式适合快速导出查询结果,但格式控制通常不如专门导出方案灵活。
如果已经有结构化文本文件,可以用 LOAD DATA INFILE 快速导入:
LOAD DATA INFILE '/tmp/user.txt'
INTO TABLE user;它适合大批量文本数据导入,通常效率较高。
也可以使用 mysqlimport 从文本文件快速导入:
mysqlimport -u root -p test /tmp/user.txt它本质上也是一种快速导入文本文件的工具。
导出和导入不一定总是围绕“整库备份”,很多时候更关注单表或文本数据交换。导出可用 SELECT ... INTO OUTFILE、mysqldump、mysql,导入可用 LOAD DATA INFILE 和 mysqlimport。