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 吗?如果是,有一个 shebang 是不是一个好主意?

谢谢。

我正在尝试将 放入 sql 脚本中,以便我可以重复使用它。

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

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

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