mysql快速导出数据(带列名)
·
以前从mysql导出数据总是喜欢用navicat自带的功能,过程很简单,只要按照要求选择导出格式就好。最近遇到要导出几百万的数据,就不敢恭维了。于是就是直接使用select into outfile命令,导出速度还是蛮快的。但是就是不能智能地在第一行输出列名,心想不就是个列名么,应该很简单呀!百度谷歌了半天也没有通用的办法,后来看了一些帖子突然有启发,自己写了一个导出语句,真心觉得很复杂,不过能用就好。在这里mark一下,做事不是那么简单的。
SET @table_name = "user_sample0528";
SET @schema_name = "douyin";
SET @output_name = CONCAT("E:\\\\DouYin\\\\mysql_output\\\\",@table_name,".txt");
SET @cols = NULL;
select GROUP_CONCAT(CONCAT("'",COLUMN_NAME,"'")) INTO @cols
from INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @table_name AND TABLE_SCHEMA = @schema_name;
SET @sql = CONCAT(" SELECT * FROM (SELECT ", @cols, " UNION ALL SELECT * FROM ", @table_name, ") as r ",
" INTO OUTFILE '", @output_name,
"' FIELDS TERMINATED BY '\\t' ");
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
用的时候替换一下前三个变量就好
table_name:要导出的表名
schema_name:数据库名
output:导出路径,注意windows下要写四个\,因为经过了两层转义,另外还要与my.ini中secure-file-priv的路径保持一致,否则会出现“[Err] 1290 - The MySQL server is running with the --secure-file-priv option so it cannot execute this statement”的错误。
---
附导出性能如下:
文件大小:3,089,881KB
记录数:3796394
时间:2580.626s
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)