这听起来应该是一件非常容易的事情,但是,我无法在任何地方找到如何去做。
我正在构建一个 .sql 文件,用于升级我的应用程序,该应用程序会更改表、插入/更新等。
我想在每个命令完成后写入屏幕。
所以,例如,如果我有类似的东西:
insert into X...
我想看到类似的东西,
开始插入表 X
完成插入表 X
这在 Postgres 中可能吗?
这听起来应该是一件非常容易的事情,但是,我无法在任何地方找到如何去做。
我正在构建一个 .sql 文件,用于升级我的应用程序,该应用程序会更改表、插入/更新等。
我想在每个命令完成后写入屏幕。
所以,例如,如果我有类似的东西:
insert into X...
我想看到类似的东西,
开始插入表 X
完成插入表 X
这在 Postgres 中可能吗?
如果您只是提供一大堆 SQL,psql
那么您有几个选择。
你可以psql
运行--echo-all
:
-a
--echo-all
在读取所有输入行时将它们打印到标准输出。这对于脚本处理比交互模式更有用。这相当于将变量设置ECHO
为all
。
那个和其他“回显这种类型的所有东西”选项(参见手册)可能太吵了。如果您只想手动打印,请使用\echo
:
\echo
text
[ ... ]
将参数打印到标准输出,用一个空格分隔,后跟一个换行符。这对于在脚本输出中散布信息很有用。
所以你可以说:
\echo 'Starting to insert into table X'
-- big pile of inserts go here...
\echo 'Finished inserting into table X'
可能有更好的方法来做到这一点。但是如果你需要使用 vanilla SQL,试试这个:
SELECT NULL AS "Starting to insert into table X";
-- big pile of inserts go here...
SELECT NULL AS "Finished inserting into table X";
通过:https ://stackoverflow.com/a/18828523/2014857
DO language plpgsql $$
BEGIN
RAISE NOTICE 'hello, world!';
END
$$;
根据你在做什么,我会担心做一堆匿名代码块。您可能会考虑将上述内容存储为函数,并传入您想要记录的任何值。