从 Postgresql 中删除架构

Tri*_*rip 3 postgresql

我正在尝试从 bash 文件执行一些 postgres 命令。

我正在尝试通过编写以下行来删除架构

DROP SCHEMA "xxx" IF EXISTS
Run Code Online (Sandbox Code Playgroud)

我这里有两个问题

  1. 我不确定如何指定应从中删除架构的数据库

  2. 我收到以下错误消息——“DROP: command not found”

谁能帮我解决这个问题?

Ada*_*man 10

您不能直接从 bash 脚本执行 SQL 语句。用于psql向数据库服务器发送命令。如果您有一个(或几个)SQL 语句要执行,您可以这样做

psql -d YOUR_DB_NAME -c "YOUR_SQL_STATEMENT"
Run Code Online (Sandbox Code Playgroud)

确保您的 SQL 语句不包含引号或适当地将它们转义。如果你在一个文件中有很多 SQL 语句,你可以像这样执行它们

psql -d YOUR_DB_NAME -f FILENAME
Run Code Online (Sandbox Code Playgroud)

上面的YOUR_DB_NAME应该是你的数据库名,YOUR_SQL_STATEMENT是你要执行的SQL语句,FILENAME是要执行的SQL语句的文件名。

如果您需要指定用户名等额外参数,请检查显示的命令的使用消息psql -?

另请注意,您的语法DROP SCHEMA不正确。它应该是

DROP SCHEMA IF EXISTS schema_name;
Run Code Online (Sandbox Code Playgroud)

另请参阅此文档