Como posso importar minha lista de servidores do pgAdmin 3 para o pgAdmin 4?

12

Gostaria de saber se existe alguma maneira de importar minha lista de servidores do pgAdmin 3 para o pgAdmin 4 (para que eu não precise criar servidores um por um novamente).

Franck Dernoncourt
fonte
4
Isso é ruim se esqueceram de implementar a migração caminho para pgAdmin importação 3 a pgAdmin 4.
Sungam
1
Obrigado por publicar. Que tal para o OSX?
chainwork

Respostas:

4

Para Windows em C: \ Users \% user% \ AppData \ Roaming \ pgAdmin, você pode encontrar o pgadmin4.db, que é onde o pgAdmin4 salva sua configuração. É o formato SQLite 3 e, com o navegador SQLite, você pode abri-lo e inserir servidores na tabela do servidor, salvar e depois adicioná-los ao pgAdmin4. Observe que as senhas são salvas criptografadas, então deixe NULL para inseri-las mais tarde. Agora você pode criar um script sql que leia a exportação do registro do pgAdmin III e insira na tabela o processo totalmente automatizado.

laki
fonte
O pgAdmin não possui o recurso de conexões de exportação / importação do servidor ...
Stephan
1

No linux (Ubuntu 16.04, no meu caso, mas também deve estar em outros sistemas), você encontrará um .pgadmin3arquivo em seu diretório pessoal. Nesse arquivo de configuração, existem entradas como

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

A parte 'Servidores' acima refere-se a um grupo de servidores, importante notar.

Com alguma diligência, você pode extrair os dados necessários disso em um formato adequado (pode ser um monte de INSERTinstruções, veja abaixo).

No diretório inicial, você encontrará um pgadmin4.dbarquivo (o local exato pode depender de como você instalou o pgAdmin4). Este é um banco de dados SQLIte 3 (como também descrito na outra resposta ) e há uma servertabela nele:

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)
    );

Você deve primeiro criar o (s) grupo (s) de servidores, a partir da interface do usuário, pois ele informará o user_idnecessário para criar um servidor usando INSERT INTO server ....

dezso
fonte