windows 上的 Postgres - 如何将 PSQL 命令行拆分为多行?
Postgres on windows - How to split PSQL command lines over multiple lines?
我正在使用 windows 批处理文件通过 psql 连接到 postgres。我正在发出这样的命令....
SET PGPASSWORD=postgres
psql -U postgres -d postgres -c "DROP USER IF EXISTS foo;"
这适用于 运行ning 一个针对数据库的简短 SQL 命令。但我遇到了两个相关问题
- 如何在多行中继续一个长 SQL 命令,以及
- 如何运行多个命令。
示例 1.....
psql -U postgres -d postgres -c "CREATE DATABASE foo
WITH OWNER = bar
ENCODING = 'UTF8'
TABLESPACE = mytabspace;"
示例 2.....
psql -U postgres -d postgres -c "
ALTER TABLE one ALTER COLUMN X TYPE INTEGER;
ALTER TABLE two ALTER COLUMN Y TYPE INTEGER;"
这些都不会如图所示工作,我进行了一些谷歌搜索并找到了一些使用 linux 执行此操作的建议,并尝试了各种克拉、反斜杠和下划线,但似乎能够跨行拆分命令。
我知道 运行 文件的 -f 选项,但我正在努力避免这种情况。
有什么建议吗?
批处理中的续行符是^
。参见 this Q&A
因此,以 space+脱字符 ^
结束该行,并确保以下行以 space 开头。
您还必须使用插入符转义跨越多行的双引号区域才能正常工作。
- 由于该行未被引用,因此对于批处理解析器,您还必须转义任何特殊字符,例如
<>|&
并使用脱字符号。
psql -U postgres -d postgres -c ^"CREATE DATABASE foo ^
WITH OWNER = bar ^
ENCODING = 'UTF8' ^
TABLESPACE = mytabspace;"
psql -U postgres -d postgres -c ^" ^
ALTER TABLE one ALTER COLUMN X TYPE INTEGER; ^
ALTER TABLE two ALTER COLUMN Y TYPE INTEGER;"
我正在使用 windows 批处理文件通过 psql 连接到 postgres。我正在发出这样的命令....
SET PGPASSWORD=postgres
psql -U postgres -d postgres -c "DROP USER IF EXISTS foo;"
这适用于 运行ning 一个针对数据库的简短 SQL 命令。但我遇到了两个相关问题
- 如何在多行中继续一个长 SQL 命令,以及
- 如何运行多个命令。
示例 1.....
psql -U postgres -d postgres -c "CREATE DATABASE foo
WITH OWNER = bar
ENCODING = 'UTF8'
TABLESPACE = mytabspace;"
示例 2.....
psql -U postgres -d postgres -c "
ALTER TABLE one ALTER COLUMN X TYPE INTEGER;
ALTER TABLE two ALTER COLUMN Y TYPE INTEGER;"
这些都不会如图所示工作,我进行了一些谷歌搜索并找到了一些使用 linux 执行此操作的建议,并尝试了各种克拉、反斜杠和下划线,但似乎能够跨行拆分命令。
我知道 运行 文件的 -f 选项,但我正在努力避免这种情况。
有什么建议吗?
批处理中的续行符是^
。参见 this Q&A
因此,以 space+脱字符
^
结束该行,并确保以下行以 space 开头。您还必须使用插入符转义跨越多行的双引号区域才能正常工作。
- 由于该行未被引用,因此对于批处理解析器,您还必须转义任何特殊字符,例如
<>|&
并使用脱字符号。
- 由于该行未被引用,因此对于批处理解析器,您还必须转义任何特殊字符,例如
psql -U postgres -d postgres -c ^"CREATE DATABASE foo ^ WITH OWNER = bar ^ ENCODING = 'UTF8' ^ TABLESPACE = mytabspace;"
psql -U postgres -d postgres -c ^" ^ ALTER TABLE one ALTER COLUMN X TYPE INTEGER; ^ ALTER TABLE two ALTER COLUMN Y TYPE INTEGER;"