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

我正在试图找出一个能实现这一目标的连接字符串,但一直没有成功。我尝试过以下各种变体:

JDBC:PostgreSQL的:C:\ myDB.fdb 结果为jdbc:PostgreSQL的:// C:\ myDB.fdb 结果,JDBC:在PostgreSQL://本地主机:端口] /C:\myDB.fdb

但似乎没有任何效果。 PostgreSQL的指示不包括此案例。这甚至可能吗?

有帮助吗?

解决方案

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

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

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

其他提示

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

总的来说,我建议在RAM类型的应用程序中使用SQLITE作为SQL数据库。

Firebird 2.1以后版本支持全局临时表,这些表仅在数据库连接期间存在。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top