虽然SELECT INTO OUTFILE和LOAD DATA INFILE是MySQL原生的高性能数据交换工具,但其语法和文件权限要求常常让人望而却步。我们来看看如何驾驭它,以及是否有更简单的替代方案。
方法一:使用SELECT INTO OUTFILE和LOAD DATA INFILE
这是MySQL官方推荐的批量数据导入导出方式,效率远高于一条条的INSERT语句。
基本语法:
导出数据到文件:
sql
SELECT * FROM your_table
INTO OUTFILE '/tmp/export_data.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';
注意:此语句要求MySQL服务进程对目标路径/tmp/有写权限,且secure_file_priv系统变量允许该路径。
从文件导入数据:
sql
LOAD DATA INFILE '/tmp/export_data.csv'
INTO TABLE your_table
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';
此方法的挑战:需要处理服务器文件路径权限,不适合从远程客户端直接操作。
方法二:使用80KM-mysql备份工具的数据导出导入向导
如果你觉得记忆上述语法和处理权限问题太麻烦,那么图形化的数据传输功能将是你的最爱。
80KM-mysql备份工具的核心能力之一就是数据迁移和备份恢复,其数据导出/导入功能设计得极为人性化。
无需语句的操作流程:
选择导出功能:在工具中连接到数据库,右键点击想要导出的表或数据库,选择“导出数据”或“转储SQL”。
选择格式和路径:在向导中,你可以选择导出为SQL文件(包含CREATE语句)、CSV、Excel等多种格式,并直接保存到你的本地电脑,无需关心服务器权限。
导入数据:同样,在目标数据库上,你可以通过“导入数据”功能,选择本地的数据文件。工具会引导你完成字段映射,确保数据被正确地插入到目标表中。
超越简单导入导出:更重要的是,你可以利用80KM-mysql备份工具的“备份”功能来实现更高级的数据提取。例如,你可以创建一个只备份特定几张表的任务,然后这个备份文件本身就是一个完美的、包含结构和数据的导出包。当你需要将这些数据“导入”到另一个环境时,直接使用该工具的“恢复”功能即可,整个过程无需你编写任何一句SELECT INTO或LOAD DATA语句,既安全又强大。