Question

Actuellement, j'ai une application qui utilise Firebird en mode intégré pour se connecter à une base de données relativement simple stockée sous forme de fichier sur mon disque dur. Je veux utiliser PostgreSQL pour faire la même chose (oui, je sais que c'est excessif). Je sais que PostgreSQL ne peut pas fonctionner en mode intégré et c'est très bien. Je peux laisser le processus serveur en marche et c'est bon pour moi.

J'essaie de trouver une chaîne de connexion qui permettra d'atteindre cet objectif, mais sans succès. J'ai essayé des variantes sur les éléments suivants:

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

mais rien ne semble fonctionner. Les directions de PostgreSQL n'incluent pas d'exemple pour ce cas. Est-ce même possible?

Était-ce utile?

La solution

Les bases de données Postgres ne sont pas un fichier unique. Il y aura un fichier pour chaque table et chaque index dans le répertoire de données, à l'intérieur d'un répertoire pour la base de données. Tous les fichiers seront nommés avec l’ID objet (OID) de db / table / index.

Les URL JDBC pointent vers le nom de la base de données, pas vers un fichier spécifique: jdbc: postgresql: foodb (l'hôte local est impliqué)

Si par "disque qui se comporte comme une mémoire", vous voulez dire que la base de données n'existe que pour la durée de vie de votre programme, rien ne vous empêche de créer une base de données au démarrage du programme et de la déposer à la sortie du programme. Notez qu'il ne s'agit que de DDL pour créer la base de données et non pour créer le répertoire de données via le programme init-db. Vous pouvez vous connecter à la base de données 'postgres' par défaut, créer votre base de données puis vous y connecter.

Autres conseils

Vous pouvez le tromper. Si vous exécutez PostGRESQL sur un système de type UNIX, vous devriez pouvoir créer un RAMDISK et l'utiliser pour le stockage de la base de données. Voici un assez bon guide des disques RAM sous Linux .

En général, cependant, je suggérerais d'utiliser SQLITE pour un type d'application SQL db in RAM.

Firebird 2.1 prend en charge les tables temporaires globales, qui n'existent que pour la durée de la connexion à la base de données.

La syntaxe va quelque chose comme CREATE GLOBAL TEMPORARY TABLE ... SUR LES ROWS COMMIT PRESERVE

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top