本文共 928 字,大约阅读时间需要 3 分钟。
方案有很多种,我这里简单说一下。
代码示例:
SELECT * FROM mytable INTO OUTFILE '/tmp/mytable.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';
使用过程中发现一个特别严重的问题:这里不能插入查询条件,比如 where
这些,也就是说只能整表导出。我不确定是不是我的写法有问题,欢迎有知道朋友留言讨论。
另一个问题是,outfile
的路径必须有写权限。由于 MySQL 的进程权限通常由 mysql
用户拥有,因此最好将文件导出到 /tmp
目录下。
代码示例:
mysql -uroot test -e "select ip from server where a.name like '%abc%'" -N -s | sed -e 's/^/"/g;s/$/"\n/g' > /tmp/test.csv
这个方法的具体步骤如下:
mysql
命令的 -e
参数执行 SQL 语句。-N
表示不输出列名,-s
表示输出结果时不带回车换行。sed
命令对输出结果进行处理: s/^/"/g
s/$/"\n/g
s/ /,/g
这样可以将数据格式转换为 CSV 格式并保存到文件中。
代码示例:
mysqldump -u username -p -t -T/path/to/directory dbname table_name --fields-terminated-by=',
这个方法与第一个方案类似,主要区别在于 mysqldump
命令的参数:
-t
:启用压缩输出。-T
:指定输出目录。--fields-terminated-by=','
:指定字段分隔符为逗号。以上方案均能实现数据库数据的导出任务,但具体选择哪种方法取决于你的需求和场景。如果有更多问题欢迎在评论区留言。
转载地址:http://vgffk.baihongyu.com/