You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下如何从PostgreSQL/MySQL抽取数据增量追加至已有文件/CSV

嘿,我来帮你搞定在Linux环境下把PostgreSQL/MySQL的查询结果追加到已有文件或CSV里的需求,分两种数据库分别说明,完全匹配你给出的示例效果:

PostgreSQL 实现方式

根据你需要的输出格式(带边框的表格或纯CSV),有两种常用方法:

1. 追加为CSV格式(无表头、无格式边框)

如果你的目标文件是标准CSV,我们需要只输出查询结果的数据行,避免重复表头:

# 替换以下参数:用户名、数据库名、目标文件路径
psql -U your_username -d your_dbname -t -A -F ',' -c "select * from tableA;" >> target_file.csv

参数说明:

  • -t:仅输出数据行,去掉表头和表格边框
  • -A:启用非对齐模式,避免自动填充空格
  • -F ',':指定字段分隔符为逗号,符合CSV标准
  • >>:将结果追加到文件末尾(用>会覆盖原有内容,注意区分)

2. 追加为带边框的表格格式

如果你想保持和示例一致的带边框表格,需要过滤掉查询结果里的表头和分隔线,只追加数据行:

# 替换以下参数:用户名、数据库名、目标文件路径
psql -U your_username -d your_dbname -c "select * from tableA;" | grep -E '^\|.*\|$' >> target_file.txt

解释:grep -E '^\|.*\|$'会只保留以|开头和结尾的行(也就是数据行),自动跳过表头和+开头的分隔线,完美匹配你要的追加效果。

MySQL 实现方式

同样针对两种格式提供解决方案:

1. 追加为CSV格式(无表头、无格式边框)

使用mysql命令行工具的参数控制输出,只追加数据行:

# 替换以下参数:用户名、密码、数据库名、目标文件路径
mysql -u your_username -pyour_password -D your_dbname -s -N -e "select * from tableA;" >> target_file.csv

参数说明:

  • -s:静默模式,去掉多余的格式输出
  • -N:不输出表头行
  • -e:直接执行指定的SQL语句
  • >>:追加到文件末尾

2. 追加为带边框的表格格式

和PostgreSQL类似,通过过滤只保留数据行:

# 替换以下参数:用户名、密码、数据库名、目标文件路径
mysql -u your_username -pyour_password -D your_dbname -e "select * from tableA;" | grep -E '^\|.*\|$' >> target_file.txt

这条命令会过滤掉查询结果里的表头和分隔线,只把数据行追加到已有表格的末尾,和你给出的示例效果完全一致。

内容的提问来源于stack exchange,提问作者mathews

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:55:44