Comment importer ma liste de serveurs de pgAdmin 3 vers pgAdmin 4?

12

Je me demande s'il existe un moyen d'importer ma liste de serveurs de pgAdmin 3 à pgAdmin 4 (pour ne pas avoir à créer de nouveau de serveurs un par un).

Franck Dernoncourt
la source
4
C'est dommage qu'ils aient oublié d'implémenter le chemin de migration pour importer pgAdmin 3 vers pgAdmin 4.
Sungam
1
Merci d'avoir posté. Et pour OSX?
chainwork

Réponses:

4

Pour Windows dans C: \ Users \% user% \ AppData \ Roaming \ pgAdmin, vous pouvez trouver pgadmin4.db où pgAdmin4 enregistre sa configuration. Il s'agit du format SQLite 3 et avec le navigateur SQLite, vous pouvez l'ouvrir et insérer des serveurs dans la table des serveurs, puis les enregistrer et ils sont ajoutés à pgAdmin4. Notez que les mots de passe sont enregistrés cryptés, alors laissez NULL pour les saisir plus tard. Vous pouvez maintenant créer un script sql qui lit l'exportation du registre à partir de pgAdmin III et l'insère dans le tableau pour un processus entièrement automatisé.

laki
la source
pgAdmin n'a pas la fonction d'export / import des connexions serveur ...
Stephan
1

Sous linux (Ubuntu 16.04, dans mon cas, mais il doit aussi être présent sur d'autres systèmes), vous trouverez un .pgadmin3fichier dans votre répertoire personnel. Dans ce fichier de configuration, il y a des entrées comme

[Servers/1]
Server=dezso.com
HostAddr=
Description=random
Service=
ServiceID=
DiscoveryID=
Port=5432
StorePwd=false
Rolename=
Restore=true
Database=postgres
Username=dezso
...

La partie «Serveurs» ci-dessus fait référence à un groupe de serveurs, qu'il est important de noter.

Avec une certaine diligence, vous pouvez en extraire les données nécessaires dans un format approprié (cela peut même être un tas de INSERTdéclarations, voir ci-dessous).

Sous votre répertoire personnel, vous trouverez un pgadmin4.dbfichier (l'emplacement exact peut dépendre de la façon dont vous avez installé pgAdmin4). Il s'agit d'une base de données SQLIte 3 (comme également décrite dans l' autre réponse ), et elle contient une servertable:

sqlite> .schema server
CREATE TABLE server (
        id INTEGER NOT NULL,
        user_id INTEGER NOT NULL,
        servergroup_id INTEGER NOT NULL,
        name VARCHAR(128) NOT NULL,
        host VARCHAR(128) NOT NULL,
        port INTEGER NOT NULL CHECK (port >= 1024 AND port <= 65535),
        maintenance_db VARCHAR(64) NOT NULL,
        username VARCHAR(64) NOT NULL,
        ssl_mode VARCHAR(16) NOT NULL CHECK (
            ssl_mode IN (
                'allow', 'prefer', 'require', 'disable', 'verify-ca', 'verify-full'
                )),
        comment VARCHAR(1024), password TEXT(64), role text(64), discovery_id TEXT, hostaddr TEXT(1024), db_res TEXT, passfile TEXT, sslcert TEXT, sslkey TEXT, sslrootcert TEXT, sslcrl TEXT, sslcompression INTEGER default 0, bgcolor TEXT(10), fgcolor TEXT(10),
        PRIMARY KEY (id),
        FOREIGN KEY(user_id) REFERENCES user (id),
        FOREIGN KEY(servergroup_id) REFERENCES servergroup (id)
    );

Vous devez d'abord créer le ou les groupes de serveurs, ce qui est mieux fait à partir de l'interface utilisateur, car il vous indiquera le user_iddont vous avez besoin pour créer un serveur à l'aide INSERT INTO server ....

dezso
la source