使用psql命令时shellscript中出现错误

时间:2020-06-25 06:47:50

标签: bash shell scripting sh psql

嗨,我正在尝试使用shellscript从psql获取数据 这是我的命令,效果很好

PGPASSWORD=nifi psql -U nifi -d MPT_BI -h 10.10.101.10
\copy (select * from dwctr.tcmpt_usage_cellid_daily where stat_date='20200502' limit 10) TO '/home/bi_it/csv_export/gp_export/dwctr.tcmpt_usage_cellid_dailny_20200502.csv' CSV DELIMITER '^'
\q

但是当我尝试使用shell进行自动化操作时,我得到的错误是我的shell脚本

#!/bin/bash
dir='/home/bi_it/csv_export/gp_export'
cd $dir
PGPASSWORD=nifi psql -U nifi -d MPT_BI -h 10.10.101.10
    \copy (select * from dwctr.tcmpt_usage_cellid_daily where stat_date='20200502' limit 10) TO '/home/bi_it/csv_export/gp_export/dwctr.tcmpt_usage_cellid_dailny_20200502.csv' CSV DELIMITER '^'
    \q

错误

./newgp.sh: line 6: syntax error near unexpected token `select'
./newgp.sh: line 6: `\copy (select * from dwctr.tcmpt_usage_cellid_daily where stat_date='20200502' limit 10) TO '/home/bi_it/csv_export/gp_export/dwctr.tcmpt_usage_cellid_dailny_20200502.csv' CSV DELIMITER '^''

有人可以帮我吗

1 个答案:

答案 0 :(得分:1)

使用“此处文档”:

#!/bin/bash
dir='/home/bi_it/csv_export/gp_export'
cd "$dir"
PGPASSWORD=nifi psql -U nifi -d MPT_BI -h 10.10.101.10 <<EOF
\copy (select * from dwctr.tcmpt_usage_cellid_daily where stat_date='20200502' limit 10) TO '/home/bi_it/csv_export/gp_export/dwctr.tcmpt_usage_cellid_dailny_20200502.csv' CSV DELIMITER '^'
\q
EOF

直到最后EOF的所有内容都将成为psql的标准输入。