PostgreSQL 服务器是否仅接受 SQL 脚本, 或者同时接受服务器和客户端 psql?

15 浏览
0 Comments

PostgreSQL 服务器是否仅接受 SQL 脚本, 或者同时接受服务器和客户端 psql?

一个 SQL 脚本能够被 RDBMS(如 PostgreSQL 服务器)单独解释吗,还是需要服务器和客户端(如 psql)共同解释?服务器是否能够接受 SQL 脚本文件,还是只有客户端可以?

我的问题源于了解到在 psql 中,\\i 命令可以用来读取和执行 SQL 脚本。但是如果 SQL 脚本可以被 PostgreSQL 服务器接受,那么我该如何提供这个脚本给服务器呢?

在编写 SQL 脚本时,我该如何编写注释?# 是否仍然用于标记注释?

我需要提供 shebang 吗?如果需要,那么有 shebang 比没有 shebang 好吗?

谢谢。

我试图将https://stackoverflow.com/a/771880/156458的内容放入一个 SQL 脚本中,这样我就可以复用它。

admin 更改状态以发布 2023年5月21日
0
0 Comments

和许多SQL shells一样,psql 对Postgres语法有基本的理解。这使得它能够识别语句的结尾并将其发送到服务器进行执行。许多客户端也需要出于其他原因理解语法,例如语法高亮。

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

实际上不存在可以直接执行的单独的SQL脚本,就像你对于脚本语言那样。应该有一个最小的包装器,可以正确连接到服务器,验证,然后通过重定向(例如do-sql < test.sql)或使用\i导入工具的功能来加载SQL。

0