如何将PostgreSQL查询结果导出为单行文本文件?
解决PostgreSQL查询结果导出为单行文本文件的方法
方法1:通过psql命令行参数控制输出格式
直接在psql命令中指定参数,强制结果输出为单行:
psql -d 你的数据库名 -U 用户名 -t -A -F '' -R '' -c "你的查询语句" > output.txt
参数说明:
-t:只输出查询结果的元组数据,去掉表头和多余格式信息-A:启用非对齐输出模式,取消默认的列对齐空格-F '':设置字段分隔符为空(若查询返回多个字段,可按需改成逗号、空格等)-R '':设置记录分隔符为空,让所有结果行合并成单行- 最后通过
>将命令输出重定向到目标txt文件
方法2:在查询语句中拼接结果为单行
利用PostgreSQL的string_agg函数,将查询返回的多行结果直接合并为单行后再导出:
比如原查询是SELECT content FROM your_table;,修改为:
SELECT string_agg(content::text, '') FROM your_table;
之后用常规导出方式(比如psql中执行\o output.txt后运行查询,再用\o关闭输出),得到的自然是单行文本。
如果需要字段间有分隔符,把string_agg的第二个参数改成对应字符即可,比如string_agg(content, ',')
方法3:使用COPY命令定制导出格式
通过COPY语句直接导出单行结果:
COPY (SELECT string_agg(col_name, '') FROM your_table) TO '/目标路径/output.txt' WITH (FORMAT TEXT, DELIMITER '', RECORD DELIMITER '');
如果没有服务器文件系统权限,可导出到标准输出再重定向:
psql -d 你的数据库名 -U 用户名 -c "COPY (SELECT string_agg(col_name, '') FROM your_table) TO STDOUT WITH (FORMAT TEXT)" > output.txt
内容的提问来源于stack exchange,提问作者SACHU KRISHNAN
相关产品推荐
相关产品推荐

