我如何在Postgresql中自动创建数据库

时间:2019-05-17 06:44:49

标签: bash postgresql shell psql

我是新手,有人可以帮我编写一个脚本以使用Shell脚本自动执行这些行吗?

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

2 个答案:

答案 0 :(得分:0)

假设您使用的是Linux:

  1. postgresql身份登录Linux
  2. 使用所有CREATE DATABASE命令创建文件。在此示例中,文件为createdb.sql,并包含以下3个create database命令:

    创建数据库moe;

    创建数据库拉里;

    卷曲创建数据库;

  3. 从Shell提示符运行以下命令:

    psql -f createdb.sql

然后,您可以列出新数据库-在这种情况下,是moe,larry和curl。

enter image description here

由于您提到要使用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手册页)。

答案 1 :(得分:0)

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

createdb testdb

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

对于更通用的命令,您可以通过在标准输入上使用psql将命令发送到Postgres。

echo 'CREATE DATABASE testdb' | psql

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