gpt4 book ai didi

postgresql - 如何将 PSQL 命令行拆分为多行?

转载 作者:行者123 更新时间:2023-11-29 13:14:17 24 4
gpt4 key购买 nike

我正在使用 Windows 批处理文件通过 psql 连接到 postgres。我正在发出这样的命令....

SET PGPASSWORD=postgres
psql -U postgres -d postgres -c "DROP USER IF EXISTS foo;"

这适用于对数据库运行一个简短的 SQL 命令。但是我在两个相关问题上遇到了麻烦

  1. 如何在多行上继续执行单个长 SQL 命令,以及
  2. 如何运行多个命令。

例子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

  • 所以以空格+脱字符结束行 ^并确保以下行以空格开头。

  • 您还必须使用插入符转义跨越多行的双引号区域才能正常工作。

    • 由于该行未被引用,因此对于批处理解析器,您还必须转义任何特殊字符,例如 <>|&还带有插入符号。
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;"

关于postgresql - 如何将 PSQL 命令行拆分为多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51116034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com