我有一个打开文件并执行一堆psql查询的bash脚本。
我希望这些查询在运行时回显/打印。
我该怎么做? 我试过使用\ echo for inserts&在存储过程中也是如此,但它似乎不起作用。我该怎么做?
答案 0 :(得分:5)
使用psql --echo-all
。
$ psql --echo-all -c "SELECT 1;"
SELECT 1;
?column?
----------
1
(1 row)
答案 1 :(得分:2)
我知道的唯一方法是,在执行PostgreSQL函数(命名存储过程)期间可以回显任何内容,使用 raise 。此命令用于转发异常,但您可以抛出NOTICE级异常,这不会干扰函数执行。 也许这不是你想要的,但它是一个很好的解决方法。 PostgreSQL执行程序的方式,不允许运行时回声(如Sybase ou Ms SQL Server)。请参阅此示例(它仅适用于函数内部):
raise notice 'Some message';
将输出:
NOTICE: Some message
或者将vars传递给调试:
raise notice 'Inserting '%' in '%'.',var_value,var_table;
当var_table ='customers'和var_value ='Joe Doe'时,它将输出:
NOTICE: Inserting 'Joe Doe' in 'customers'
答案 2 :(得分:0)
--echo-queries(用于 shell 脚本)
PGPASS='passwd'
su -c "PGPASSWORD=${PGPASS} psql -d postgres --echo-queries -qc "\pset border 2;" -c "show data_directory;"" postgres