【问题标题】:how do i automate creating database in postgresql我如何在 postgresql 中自动创建数据库
【发布时间】:2019-10-04 11:08:54
【问题描述】:

我是新手,谁能帮我写一个脚本来使用 shell 脚本自动化这些行?

postgres=# CREATE DATABASE testdb;<br>
postgres-# 

【问题讨论】:

    标签: bash postgresql shell psql


    【解决方案1】:

    假设您使用的是 Linux:

    1. postgresql 身份登录Linux
    2. 使用所有 CREATE DATABASE 命令创建一个文件。在本例中,文件为createdb.sql,包含以下 3 个创建数据库命令:

      创建数据库萌;

      创建数据库拉里;

      创建数据库卷曲;

    3. 在 shell 提示符下运行以下命令:

      psql -f createdb.sql

    然后您可以列出您的新数据库——在本例中为 moe、larry 和 curly。

    由于您提到想要一个 bash shell 脚本(自动化)上述任务,您可以创建一个如下所示的脚本来接受包含您的 SQL 命令的 SQL (.sql) 文件的名称作为命令行参数,并使用 psql 处理它们:

    #!/bin/bash
    psql -f $1 
    

    假设上述文件及其内容名为autosql.sh,您将在创建后更改脚本模式以执行(chmod 755 autosql.sh)并从命令行运行它:

    autosql.sh createdb.sql
    

    您现在可以使用此 bash shell 脚本并传入包含您希望运行的 SQL 命令的任何 SQL (.sql) 文件。

    要在 Linux 上自动执行此过程,请使用 cron(有关详细信息,请参阅 cron 手册页)。

    【讨论】:

    • 我希望自动创建 CREATE DATABASE TESTDB 而无需从键盘输入。 sudo -i -u postgres psql 在此之后进入 postgresql 我希望自动创建该数据库
    【解决方案2】:

    Postgres 有一个用于创建数据库的命令行工具:createdb。您的脚本可以调用它,并使用相应的dropdb 来删除它们。

    createdb testdb
    

    连接和身份验证的工作方式与psql 非常相似。您可以在命令行中传递连接信息,也可以使用环境变量PGHOSTPGPORTPGUSER

    对于更通用的命令,您可以使用psql 将命令发送到 Postgres,方法是将它们通过管道输入到标准输入中。

    echo 'CREATE DATABASE testdb' | psql
    

    对于更复杂的事情,我建议您使用功能更强大的语言和 Postgres 数据库库。

    【讨论】:

      猜你喜欢
      • 2016-11-12
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 2022-01-15
      • 2017-01-20
      • 2019-07-18
      • 1970-01-01
      • 2021-09-03
      相关资源
      最近更新 更多