postgresql - 以编程方式创建 postgreSQL 数据库

标签 postgresql

<分区>

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

我在 Google 上四处寻找,但运气不佳。我希望以编程方式从我的应用程序中创建数据库,但如果有人知道我是否以及如何使用安装程序向导来完成此操作,那也很好。该应用程序旨在仅在 Windows 上运行,但无一异常(exception)地在所有计算机上运行。

最佳答案

无论使用何种工具和编程语言,您要使用的方法都是相同的:

  1. 在您的程序中,在启动期间连接到在 PostgreSQL 安装中始终可用的 template1postgres 数据库并发出 SELECT 1 FROM pg_database WHERE datname = ? 并作为第一个参数传递所需的数据库名称。

  2. 检查返回的结果集。如果返回一行,则数据库存在,你就完成了,不需要进一步的操作。如果没有返回任何行,则数据库不存在,您需要创建它,因此:

  3. 根据手册发出 CREATE DATABASE mydatabasename; 以及任何所需的选项,例如 OWNERENCODING 等以创建数据库它的 self 。新数据库将为空。

  4. 通过连接到应用程序中的新数据库并直接从应用程序发送一系列 SQL 命令来填充数据库,或者通过在 shell 上调用 psql 命令来读取sql 脚本文件并将其发送到数据库。我通常更喜欢直接在我的应用程序中运行 SQL。

如果您想在安装期间创建数据库,这主要取决于您和您的安装程序,但它通常会像在 PostgreSQL 启动后调用 CREATE DATABASE 一样简单,然后输入 psql 一个脚本。

关于postgresql - 以编程方式创建 postgreSQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16501971/

相关文章:

postgresql - 如何使用 Node.js 中的 Lambda 函数从 Amazon RDS 获取数据?

java - 在java程序中运行psql命令

postgresql - 使用带有 pgbouncer 的事务池有什么优势?

sql - 在表格中找到相同地理点的最快方法是什么?

postgresql - 如何在整个Gitlab管道生命周期中创建持久数据库?

postgresql - Azure PostgreSQL 即服务延迟问题

sql - PostgreSQL:如何从数据输出中编辑数据?

sql - 在持续时间列表中汇总每日总和

regex - Postgres/TCL flavor 正则表达式 : Negate a match using lookarounds

postgresql - postgres 中的 sqlite IFNULL()