我正在尝试使用此处描述的方法How to take backup of functions only in Postgres备份数据库中的函数。
但它显示错误<< was unexpected at this time
。
我在命令提示符中输入的代码如下所示。
psql.exe -U postgres -At dbname > /path/to/output/file.sql <<"__END__"
SELECT pg_get_functiondef(f.oid)
FROM pg_catalog.pg_proc f
INNER JOIN pg_catalog.pg_namespace n ON (f.pronamespace = n.oid)
WHERE n.nspname = 'public';
__END__
请帮忙。
答案 0 :(得分:0)
我确定有办法实现,但最简单的方法就是将sql作为一行提供-c
选项:
psql.exe -U postgres -At dbname -c "SELECT pg_get_functiondef(f.oid) FROM pg_catalog.pg_proc f INNER JOIN pg_catalog.pg_namespace n ON (f.pronamespace = n.oid) WHERE n.nspname = 'public'" > /path/to/output/file.sql
这也更便携,可以使用需要一行的工具,如cron等
答案 1 :(得分:0)
这是一个shell问题。
&LT;&LT;是类似Unix的shell的一个功能,而你似乎在使用Windows。
只需将查询文本保存到文件中,然后使用-f标志运行它。