我对这段代码感到困惑:
...
COM="psql -d $DBNAME -p $PGPORT -c 'COPY (SELECT * FROM $TABLE_NAME s WHERE cast(s.$COLUMN_NAME as DATE) < DATE '$DATE_STOP' ) TO '$SCRIPTPATH/$ARCHIVE_NAME--$DBNAME' WITH CSV HEADER;'"
su postgres -c '$COM' &> pg_a.log
...
在psql shell中,这个SQL代码工作正常,但是在脚本中他没有创建存档,也没有告诉我任何错误或失败。
提前致谢!
答案 0 :(得分:0)
如果用这个替换“su”命令,你会得到一个提示:
echo '$COM'
你会看到它打印出$ COM - 不是扩展,而是字符串本身。
您可能会发现此方法存在许多其他问题。你将不得不逃避一堆字符,所以shell不会为你解释它们。这将是一个真正的痛苦。
我会把sql放到一个文件中,并使用-f选项来psql。