sql脚本是否仅由PostgreSQL服务器或服务器和客户端psql接受?

Is a sql script acceptable solely by PostgreSQL server, or by both server and client psql?

SQL脚本是否只能由RDBMS(如PostgreSQL服务器)或服务器和客户机(如PSQL)解释?服务器可以接受SQL脚本文件,还是只有客户端可以接受?

我的问题来自于在psql中,\i可以用于读取和执行SQL脚本。但是,如果PostgreSQL服务器可以接受SQL脚本,那么如何向服务器提供该脚本呢?

在编写SQL脚本时,如何编写注释?#是否仍用于发出评论信号?

我需要提供shebang吗?如果是的话,有舍邦比没有好吗?

谢谢。

我正在尝试将https://stackoverflow.com/a/771880/156458放入SQL脚本中,以便重用它。


像许多SQL shell一样,psql对postgres语法有基本的理解。这允许它标识语句的结尾,并将其转发给服务器以供执行。许多客户机还需要了解语法的其他原因,例如语法突出显示。

默认语句终止符是;,可以出现在字符串中。这意味着需要一个基本的解析器来避免发送不完整的语句。此终止符也可以更改,因此客户端需要跟踪当前的终止符或"分隔符"是什么。

实际上没有一个独立的SQL脚本可以像脚本语言那样直接执行。您应该有一个最小的包装器,它可以帮助正确连接到服务器、进行身份验证,然后通过使用重定向(如do-sql < test.sql\i导入工具等功能在SQL中发送负载。