Domanda

Attualmente, ho un'applicazione che utilizza Firebird in modalità incorporata per connettermi a un database relativamente semplice memorizzato come file sul mio disco rigido. Voglio passare a utilizzare PostgreSQL per fare la stessa cosa (Sì, lo so che è eccessivo). So che PostgreSQL non può funzionare in modalità integrata e va bene, posso lasciare il processo del server in esecuzione e va bene per me.

Sto cercando di capire una stringa di connessione che raggiungerà questo obiettivo, ma non ha avuto successo. Ho provato variazioni su quanto segue:

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

ma nulla sembra funzionare. Le direzioni di PostgreSQL non includono un esempio per questo caso. È anche possibile?

È stato utile?

Soluzione

I database Postgres non sono un singolo file. Ci sarà un file per ogni tabella e ciascun indice nella directory dei dati, all'interno di una directory per il database. Tutti i file verranno denominati con l'ID oggetto (OID) di db / table / index.

Gli URL JDBC puntano al nome del database, non a nessun file specifico: jdbc: postgresql: foodb (è implicito localhost)

Se per " disco che si comporta come memoria " ;, intendi che il db esiste solo per la durata del tuo programma, non c'è motivo per cui non puoi creare un db all'avvio del programma e rilasciarlo all'uscita del programma. Si noti che questo è solo DDL per creare il DB, non creando la directory dei dati tramite il programma init-db. Potresti connetterti al db 'postgres' predefinito, creare il tuo db e poi collegarti ad esso.

Altri suggerimenti

Puoi ingannarlo. Se stai eseguendo PostGRESQL su un sistema simile a UNIX, dovresti essere in grado di creare un RAMDISK e utilizzarlo per l'archiviazione del database. Ecco un buon passo per passo guida per dischi RAM su Linux .

In generale, tuttavia, suggerirei di utilizzare SQLITE per un db SQL nel tipo di applicazione RAM.

Firebird 2.1 in poi supporta tabelle temporanee globali, che esistono solo per la durata della connessione al database.

La sintassi è simile a CREATE TABELLA TEMPORANEA GLOBALE ... SU COMMIT PRESERVE ROWS

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top