0

目前,我有一个应用程序,它在嵌入式模式下使用 Firebird 连接到一个相对简单的数据库,该数据库作为文件存储在我的硬盘上。我想改用 PostgreSQL 来做同样的事情(是的,我知道这太过分了)。我知道 PostgreSQL 不能在嵌入式模式下运行,这很好 - 我可以让服务器进程保持运行,这对我来说没问题。

我正在尝试找出一个可以实现此目的的连接字符串,但没有成功。我尝试了以下变体:

jdbc:postgresql:C:\myDB.fdb
jdbc:postgresql://C:\myDB.fdb
jdbc:postgresql://localhost:[端口]/C:\myDB.fdb

但似乎没有任何效果。PostgreSQL 的说明不包括这种情况的示例。这甚至可能吗?

4

3 回答 3

1

你可以欺骗它。如果您在类 UNIX 系统上运行 PostGRESQL,那么您应该能够创建 RAMDISK 并将其用于数据库存储。这是 Linux 上 RAMdisks 的一个非常好的分步指南

不过,一般来说,我建议在 RAM 类型的应用程序中使用 SQLITE 作为 SQL db。

于 2009-10-26T19:31:23.903 回答
0

Postgres 数据库不是单个文件。在数据库目录中的数据目录中,每个表和每个索引都有一个文件。所有文件都将使用 db/table/index 的对象 ID (OID) 命名。

JDBC url 指向数据库名称,而不是任何特定文件:jdbc:postgresql:foodb(隐含 localhost)

如果通过“表现得像内存的磁盘”,您的意思是数据库仅在程序的生命周期内存在,那么您没有理由不能在程序启动时创建数据库并在程序退出时将其删除。请注意,这只是创建数据库的 DDL,而不是通过 init-db 程序创建数据目录。您可以连接到默认的“postgres”数据库,创建您的数据库然后连接到它。

于 2009-10-26T20:09:36.540 回答
0

Firebird 2.1 以后支持全局临时表,它只在数据库连接期间存在。

语法类似于 CREATE GLOBAL TEMPORARY TABLE ... ON COMMIT PRESERVE ROWS

于 2009-11-13T21:12:44.570 回答