[SHELL/MYSQL] 基于Shell实现mysql查询结果保存为CSV文件
step1 安装 mysql 客户端
安装客户端章节
step2 shell 脚本
- mysql 命令执行 SQL 查询后,默认输出的列使用制表符 (
\t) 分隔。- 通过
--batch和--skip-column-names参数,取消了列名,并让结果更适合输出。- 使用
sed 's/\t/,/g'将制表符替换为逗号,从而生成 CSV 格式的输出。- 对于
TXT文件输出,保持原始的制表符格式即可,不需要使用sed进行替换。
#!/bin/bash
# MySQL 配置
DB_HOST="host"
DB_PORT="port"
DB_USER="user"
DB_PASSWORD="password"
DB_NAME="dbName"
# 要执行的 SQL 查询
## 方式1: 多行的复杂SQL时不推荐
#SQL_QUERY="
#SELECT * FROM xxxTable;
#"
## 方式2: 多行的复杂SQL时不推荐
SQL_QUERY=$(< query-sql.sql)
# echo "$SQL_QUERY"
# 输出文件
CSV_FILE="output.csv"
#TXT_FILE="output.txt"
# 查询并将结果保存为 CSV 文件
##mysql -h "$DB_HOST" --port=$DB_PORT -u "$DB_USER" -p"$DB_PASSWORD" -D "$DB_NAME" -e "$SQL_QUERY" --batch --skip-column-names | sed 's/\t/,/g' > "$CSV_FILE"
mysql -h "$DB_HOST" --port=$DB_PORT -u "$DB_USER" -p"$DB_PASSWORD" -D "$DB_NAME" < query-sql.sql --batch --skip-column-names | sed 's/\t/,/g' > "$CSV_FILE"
# 查询并将结果保存为 TXT 文件
## mysql -h "$DB_HOST" --port=$DB_PORT -u "$DB_USER" -p"$DB_PASSWORD" -D "$DB_NAME" -e "$SQL_QUERY" --batch --skip-column-names > "$TXT_FILE"
# 提示文件已保存
## echo "查询结果已保存为 $CSV_FILE 和 $TXT_FILE"
echo "查询结果已保存为 $CSV_FILE !"
X 参考文献
本文作者:
千千寰宇
本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!
本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!

浙公网安备 33010602011771号