mysql 数据导出到文件

在MySQL中导出查询结果到文件,可以使用以下方法:

方法一:使用 SELECT ... INTO OUTFILE(服务端导出)

sql

复制

SELECT kid, title, question
FROM knowledge_base_faq_batch
WHERE label = '帮助中心FAQ'
LIMIT 1000
INTO OUTFILE '/tmp/result.csv'
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

注意:

  1. 文件路径需在MySQL允许的目录(通过 SHOW VARIABLES LIKE 'secure_file_priv'; 查看)。

  2. 需要MySQL用户有 FILE 权限。

  3. 默认覆盖已有文件,若文件存在会报错。

方法二:命令行重定向(本地导出)

bash

复制

mysql -u 用户名 -p 数据库名 -e "SELECT kid, title, question FROM knowledge_base_faq_batch WHERE label = '帮助中心FAQ' LIMIT 1000;" > ~/result.csv

优化格式(避免表格线):

bash

复制

mysql -u 用户名 -p --batch --silent 数据库名 -e "SELECT kid, title, question FROM knowledge_base_faq_batch WHERE label = '帮助中心FAQ' LIMIT 1000;" | tr '\t' ',' > ~/result.csv
  • --batch --silent 去除格式化输出。

  • tr '\t' ',' 将制表符替换为逗号,生成CSV。

方法三:使用MySQL Workbench

  1. 执行查询语句。

  2. 结果网格下方点击 “Export” 图标。

  3. 选择格式(CSV/Excel)和路径导出。

处理特殊字符

在 INTO OUTFILE 中增加转义和编码设置:

sql

复制

CHARACTER SET utf8mb4
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '"'
LINES TERMINATED BY '\r\n';

常见问题

  • 权限不足:确保用户有 FILE 权限,且路径在 secure_file_priv 允许范围内。

  • 文件已存在:导出前删除旧文件或更换文件名。

  • 乱码问题:导出时指定正确的字符集(如 utf8mb4)。

导出命令

mysql -uroot -h192.168.1.245 -P3306 -p1**** business_chatgpt -e "SELECT CASE WHEN title = '全部' THEN '' WHEN LOCATE('/', title) = 0 THEN '' ELSE SUBSTRING_INDEX(SUBSTRING_INDEX(title, '/', 2), '/', -1) END AS extracted_title, kid FROM knowledge_base_faq;" | tr '\t' ',' > batch_result_faq.txt

导入命令

mysql -uroot -h192.168.1.245 -P3306 -p123456 business_chatgpt < /opt/onlinetask/udpate-source.sql

文件内容:
UPDATE knowledge_base_faq set title = '移动帮助' where kid = 3332;
UPDATE knowledge_base_faq set title = '人资管理' where kid = 3333;
UPDATE knowledge_base_faq set title = '人资管理' where kid = 3334;
UPDATE knowledge_base_faq set title = '财务管理' where kid = 3335;
UPDATE knowledge_base_faq set title = '人资管理' where kid = 3336;
UPDATE knowledge_base_faq set title = '财务管理' where kid = 3337;
UPDATE knowledge_base_faq set title = '人资管理' where kid = 3338;
UPDATE knowledge_base_faq set title = '财务管理' where kid = 3339;
UPDATE knowledge_base_faq set title = '人资管理' where kid = 3340;
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值