代码之家  ›  专栏  ›  技术社区  ›  Tim unnamed eng

一个sql脚本是只被postgresql服务器接受,还是同时被服务器和客户端psql接受?

  •  0
  • Tim unnamed eng  · 技术社区  · 7 年前

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

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

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

    我需要提供一个shebang吗?如果是的话,有没有比没有更好的主意?

    谢谢。

    我在试着定位 https://stackoverflow.com/a/771880/156458 变成一个sql脚本,这样我可以重用它。

    1 回复  |  直到 7 年前
        1
  •  1
  •   tadman    7 年前

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

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

    实际上,没有独立的sql脚本可以像脚本语言那样直接执行。您应该有一个最小的包装器,它可以帮助您正确地连接到服务器,进行身份验证,然后使用重定向(例如 do-sql < test.sql )或者像 \i 导入工具。