首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为PostgreSQL构建构建系统

如何为PostgreSQL构建构建系统
EN

Stack Overflow用户
提问于 2014-09-17 19:17:05
回答 2查看 2.1K关注 0票数 2

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

代码语言:javascript
复制
{
    "cmd": ["sqlcmd", "-S", ".", "-i", "$file"],
    "selector": "source.sql",
    "shell": true
}

对于PostgreSQL,我尝试了这个:

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

但是,虽然与MS SQL我可以引用数据库从脚本与USE关键字,没有这样的功能在Postgre所以上面的构建不能工作,似乎我必须硬编码每个数据库来建立系统,这在这种情况下是无意义的。

有什么想法让这个工作-从Sublime文本在任意的PostgreSQL数据库上运行sql脚本?

EN

回答 2

Stack Overflow用户

发布于 2014-09-18 00:45:05

构建系统的"cmd"数组的内容必须是您在命令行中输入的内容,以便运行该命令-DB也不例外。我对Postgres的内部机制一无所知,但是如果您需要在命令行上指定DB的名称,那么您必须在构建系统中执行此操作。

然而,除了可能有几十个构建系统之外,还有一种选择--在一个.sublime-project文件中定义构建系统。根据documentation.sublime-project文件可以有三个基本组:"folders""settings""build_systems"。要创建项目,请打开要包含在侧边栏中的文件夹,然后单击Project -> Save Project As....输入其名称并将其保存在逻辑位置。然后,选择Project -> Edit Project,,这将使用JSON语法打开.sublime-project文件。它应该看起来像这样:

代码语言:javascript
复制
{
    "folders":
    [
        {
            "follow_symlinks": true,
            "path": "C:\\Users\\MattDMo\\Development\\DB\\my_postgres_db1"
            // by default, Sublime uses double-backslashes :(
        }
    ],
}

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

代码语言:javascript
复制
{
    "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
        }
    ]
}

你应该都准备好了。现在您有了模板,您可以根据需要创建任意数量的文件副本,自定义DB名称和构建系统名称。Tools -> Build System菜单中将显示"name"字段,您可以直接选中它,或者如果您没有任何其他包含"selector": "source.postgresql"的构建系统,也可以使用Automatic

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

祝好运!

票数 1
EN

Stack Overflow用户

发布于 2018-08-30 18:47:16

解决方法:

代码语言:javascript
复制
{"cmd": ["psql", "-d", "$file_base_name", "-U", "username", "-f", "$file"]}

为您在Sublime中用于与psql交互的文件提供与您的数据库相同的名称。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25889097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档