如何在Perl中创建Postgres数据库?

Mar*_*her 4 postgresql perl dbi

如何从Perl创建Postgres数据库?这在Perl Postgres DBI驱动程序DBD::Pg(或几乎其他任何地方)中没有记录。我需要能够从我的程序中创建一个临时数据库,而不是必须使用psqlpgAdmin创建数据库。

Mar*_*her 5

诀窍是使用安装Postgres时可能拥有的“ postgres”数据库(如果没有“ postgres”数据库,您可能知道原因)。如果您以“ postgres”用户身份连接到“ postgres”数据库,则可以发出然后创建数据库 SQL命令,如下所示:

my $dbh = DBI->connect("dbi:Pg:dbname=postgres", "postgres");
$dbh->do('create database "Scratch-School"');
Run Code Online (Sandbox Code Playgroud)

(您可能还会看到以编程方式创建一个postgreSQL数据库,它在更高级别上涉及了此问题。)

  • 您应该远离带引号的标识符,例如““ Scratch-School”`。许多工具对此都有问题。最好使用`create database scratch_school`,使名称不区分大小写,并且不需要您每次都写双引号。 (3认同)
  • 关键是要创建数据库,您需要首先连接到另一个现有数据库。它不必是`postgres`,也不是Perl特有的。即使使用`psql`,甚至使用`createdb`本身也是如此。 (2认同)