我在bash脚本中有以下代码片段:
psql -U ppd ppd -h $remote_server -t -c "copy (SELECT CASE WHEN DATE_TRUNC('MONTH', ABSTIME(start_ts)) = DATE_TRUNC('MONTH', CURRENT_DATE) THEN 'current' ELSE DATE_TRUNC('MONTH', ABSTIME(start_ts))::DATE::TEXT END,
id,
status,
class,
dir,
volid,
f_user,
t_user,
ABSTIME(start_ts),
ABSTIME(end_ts),
elapsed,
callid, f_uri, t_uri, lcr_tag
FROM ppd_widgets) to '/tmp/"$server".db' With CSV DELIMITER ',';"
scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null "root@$server:/tmp/$server.db" "$dir/"
我想知道是否有办法一次性完成 - 也就是说不是在远程服务器上创建csv文件然后复制它,我可以选择记录并以csv格式显示吗?
然后我可以这样做:
psql -U ppd ppd -h $remote_server -t -c "select that returns in csv style" >> save_to_local.csv
有关如何执行此操作的任何提示/建议?
答案 0 :(得分:1)
使用psql的\copy
函数(不是PostgreSQL' s copy
函数)
这使您可以在本地加载或保存文件
示例:
psql -c "\copy (select ...) to 'local-file.csv'"