【问题标题】:How to source multiple functions in psql?如何在 psql 中获取多个函数?
【发布时间】:2017-10-04 14:39:11
【问题描述】:

我有一个至少有 6 个函数文件的目录。

我正在使用 psql,我需要能够一次获取(初始化?)所有函数文件。

我确定只创建一个函数并像 SELECT fn1, fn2 这样调用所有其他函数是行不通的。

\i functions_folder/fn1.sql 6 次也不理想。

那么有什么办法可以(也许)\i functions/*.sql?这样做目前给了我

functions/*.sql: No such file or directory

我在 postgresql 9.6.2 上使用 psql

【问题讨论】:

    标签: postgresql psql


    【解决方案1】:

    如果您使用 *nix 操作系统:

    postgres=# \! cat ./functions/*.sql > all_functions.sql postgres=# \i all_functions.sql

    对于 Windows,尝试找到 cat 的类似物(我记得它是带有一些标志的 copy 命令)

    PS 我感觉可以通过使用反引号来完成:

    在参数中,用反引号 (`) 括起来的文本被视为传递给 shell 的命令行。命令的输出(删除任何尾随换行符)替换反引号文本。

    Documentation

    但仍然不知道如何。可能更有经验的人会提供提示......

    【讨论】:

    • 谢谢,我使用的是 Linux,而且效果很好。没有反引号/反引号。也是 type 命令不是 cat 看到 Windows Alternative to cat command
    • @ArchNoob 您提供了指向该问题的链接,我在该问题中找到了有关 POSIX 的 Windows 替代方案的信息 cat :o) 查看 cmets 以获取已接受的答案(关于不必要的行)和下一个答案是copy /b。祝你好运。
    • 这确实是一个值得阅读的话题,但是我已经看到了type 的问题。感谢您的指正,祝您好运。
    【解决方案2】:

    创建一个包含\i 命令和\i 包装器的包装器。

    【讨论】:

    • "包含`\i`命令的包装"你的意思是包含函数文件名的包装?还是包含\i filename.sql \n \i filaname2.sql
    • 后者;使用包含其他文件的文件。
    • 哦,有点像 Abelisto 在他的回答中所说的? cat 函数文件的内容。我不会知道这个把戏。谢谢。 :D
    • @ArchNoob 是的,这是另一种选择:ls ./functions/*.sql | sed -e 's/^/\\i /g' > wrapper.sql 但我们不是在谈论 PostgreSQL,而是在谈论 shell :o)
    • 当然,我知道。 irc (ningu) 中的某个人让我得到了类似 cat ./functions/* | psql ... 的东西,但我想要更多 psql-ish .. @Abelisto ;)
    猜你喜欢
    • 2012-02-08
    • 1970-01-01
    • 2021-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    相关资源
    最近更新 更多