通过编程创建一个postgreSQL数据库

8

我正在使用Visual Studio 2012构建一个应用程序,每次运行时都希望检查是否存在某个Postgres数据库,如果不存在,则创建一个具有指定表等的数据库。

我在Google上搜索了一下,但没有找到合适的方法。我希望能够通过编程方式从我的应用程序中创建数据库,但如果有人知道如何使用安装向导来完成这个任务,那也是可以的。该应用程序仅在Windows上运行,但不排除任何机器。


我并不认为这个问题应该被关闭,大部分的名字都不熟悉,所以我认为它们来自于 [tag:visual-studio] 标签的关注者。我提名重新开放,尽管老实说这与 Visual Studio 没有什么关系,所以我将删除这个标签。 - Craig Ringer
谢谢你为我所做的一切。我很新于stackoverflow论坛,所以不太明白"closevoted"是什么意思。但无论如何,感谢你的贡献! :) - George Element Sotiriou
1个回答

10
无论使用哪种工具和编程语言,你想要使用的方法都是相同的: 1. 在程序启动时,连接到PostgreSQL安装中始终可用的“template1”或“postgres”数据库,并发出“SELECT 1 FROM pg_database WHERE datname =?”命令,将所需的数据库名称作为第一个参数传递。 2. 检查返回的结果集。如果返回一行,则数据库存在,完成操作,无需进一步操作。如果未返回任何行,则数据库不存在,您需要创建: 3. 使用CREATE DATABASE mydatabasename;命令创建新数据库。可以根据手册的说明添加其他选项,如OWNER、ENCODING等。新数据库将是空的。 4. 连接到应用程序中的新数据库,并直接发送一系列SQL命令以填充它,或者调用shell上的psql命令来读取sql脚本文件并将其发送到数据库。通常情况下,我更喜欢在我的应用程序中直接运行SQL。
如果您希望在安装期间创建DB,则主要取决于您和您的安装程序,但通常只需在PostgreSQL启动后进行CREATE DATABASE调用,然后将脚本提供给psql即可。

非常感谢!我会尝试,这非常有帮助并且很清楚! - George Element Sotiriou
2
@GeorgeElementSotiriou 很高兴能帮忙。PostgreSQL是一个可以嵌入应用程序的不错的数据库,但确保您的应用程序在非默认端口(即不是5432),服务账户和数据库位置上安装其自己的PostgreSQL,以避免与用户可能自己安装的任何PostgreSQL发生冲突。您的安装程序应该创建自己的服务,或者您的应用程序应该使用pg_ctl自行启动/停止PostgreSQL。 - Craig Ringer
在我的情况下(使用Postgres 9.3的Perl),我必须作为用户“postgres”连接到数据库“postgres”,然后才能创建数据库。 - Mark Leighton Fisher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接