如何制作PostgreSQL的构建系统[英] How to make build system for PostgreSQL

本文是小编为大家收集整理的关于如何制作PostgreSQL的构建系统的处理方法,想解了如何制作PostgreSQL的构建系统的问题怎么解决?如何制作PostgreSQL的构建系统问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

为 MS SQL Server 制作构建系统很容易:

{
    "cmd": ["sqlcmd", "-S", ".", "-i", "$file"],
    "selector": "source.sql",
    "shell": true
}

对于 PostgreSQL,我试过这个:

{
    "env": {"PGPASSWORD": "password"},
    "cmd": ["C:/PostgreSQL/9.3/bin/psql.exe", "-U", "postgres", "-f", "$file"],
    "selector": "source.postgresql",
    "shell": true
}

但是,虽然使用 MS SQL 我可以使用 USE 关键字从脚本中引用数据库,但 Postgre 中没有这样的功能,因此上面的构建无法工作,在我看来,我必须将每个数据库硬编码为在这种情况下构建系统是无意义的.

任何想法如何使这项工作 - 在任意 PostgreSQL 数据库上从 Sublime Text 运行 sql 脚本?

推荐答案

构建系统的 "cmd" 数组的内容必须是您在命令行上键入的内容才能运行该命令 - DB 也不例外.我对 Postgres 的内部结构一无所知,但是如果您需要在命令行上指定数据库的名称,那么您必须在构建系统中进行.

但是,有一个替代方法可以替代可能存在数十个构建系统 - 在 .sublime-project 文件中定义构建系统.根据 documentation,.sublime-project 文件可以有三个基本组:"folders"、"settings" 和 "build_systems".要创建项目,请打开要包含在边栏中的文件夹,然后单击 Project -> Save Project As....输入其名称并将其保存在合乎逻辑的位置.然后,选择 Project -> Edit Project,这将打开具有 JSON 语法的 .sublime-project 文件.它应该看起来像这样:

{
    "folders":
    [
        {
            "follow_symlinks": true,
            "path": "C:\\Users\\MattDMo\\Development\\DB\\my_postgres_db1"
            // by default, Sublime uses double-backslashes :(
        }
    ],
}

在 "folders" 的右方括号后添加一个 "build_systems": 标识符,然后放入您的构建系统:

{
    "folders":
    [
        {
            "follow_symlinks": true,
            "path": "C:\\Users\\MattDMo\\Development\\DB\\my_postgres_db1"
        }
    ],
    "build_systems":
    [
        {
            "name": "my_postgres_db1",
            "cmd": ["C:/PostgreSQL/9.3/bin/psql.exe", "-W", "-U", "postgres", "-d", "my_postgres_db1", "-f", "$file"],
            // you can use either double backslashes or forward slashes on Windows. Forward is better :)
            "selector": "source.postgresql",
            "shell": true
        }
    ]
}

你应该准备好了.现在您有了模板,您可以根据需要制作尽可能多的文件副本,并根据需要自定义数据库名称和构建系统名称."name" 字段将显示在 Tools -> Build System 菜单中,您可以直接选择它,如果没有其他字段,则可以使用 Automatic构建包含 "selector": "source.postgresql" 的系统.

它确实涉及您拥有的每个数据库的一些工作,并且您必须记住在切换数据库时切换活动项目(我只是为每个活动项目保持一个窗口打开),但其他比它应该解决你的问题.您会注意到我删除了 "env": {"PGPASSWORD": "password"}, 行(无论如何它应该放在方括号中),而是将 -W 命令行选项添加到 psql.exe 以提示输入密码.无法加密 .sublime-project 文件,因此任何可以读取它们的人都会看到您服务器的密码.我不知道使用 "shell": true 是否导入你的 shell 的环境变量,我怀疑它没有,但你必须测试.运行构建系统时输入是一回事,但它会使您的整个系统更加安全.当然,如果您不想要/不需要额外的安全性,请随时恢复,但如果它是面向公众的服务器,我不会.

祝你好运!

本文地址:https://www.itbaoku.cn/post/1764051.html