Você pode explicar a exportação e a importação do ProgreSQL usando o phpPgAdmin? (E o que há com permissões?)

5

Bounty Edit: Eu deixei a pergunta original, mas gostaria de uma boa resposta sobre o desastre total de permissões que o Postgres parece tomar banho.
' Importando & exportando clientes db's: Um guia de campo '

Acabei de receber este trabalho hoje, onde precisamos usar o PostgreSQL .

O cliente tem dois hosts e eles usam apenas phpPgAdmin para acessar o banco de dados. Não há SSH.

Precisamos exportar os dados e depois importá-los para uma máquina dev local.

Sendo sábio no caminho do MySQL Estou um pouco perdido quanto ao processo correto.

Há o PostgreSQL > > banco de dados > > exportação
e de lá se obtém:

Eutenhoencontradoadocumentação,mas,parafalaraverdade,nãoconsigoencontrarumaexplicaçãosimpleserealmentenãomeimportocomobancodedadosouoPostgresnomomento.TudooqueprecisamosfazeréabordarossitesPHP.

Meavisecomumasinopse/cheatsheet/guiemeussyblingssysadminy.

Edições:
AlterouaquestãoparaincluiraspermissõesdoPostgreSQLaoimportarumbancodedados.
ParecehavermuitomaisparaconfigurarumnovoservidorPostgreSQLnoquedizrespeitoàspermissões.

EuperguntoespecificamentesobreophpPgAdminporquemeuservidornãoélocalhost&nãotemGUI.

Tenhoasensaçãodequeéumacoisadepermissões link

Esclarecido que não há SSH na caixa de clientes.

Ainda não é possível encontrar documentação concisa sobre todo esse processo. Estou realmente evitando tarefa até ter uma ideia mais clara. Pode parecer converter em banco de dados MySQL para facilitar.

    
por Gareth 06.05.2009 / 06:05

4 respostas

4

Exportar

  1. Login
  2. Navegue até a guia "Exportar"
  3. Clique no botão de opção "Estrutura e dados"
  4. Clique no botão de opção "Download"
  5. Clique no botão "Exportar" e salve-o na sua máquina local.

Importar

  1. Navegue até o link para fazer o download do pgAdmin III (uma das melhores ferramentas gratuitas da GUI do Postgres)
  2. Instalar
  3. Use-o para todas as suas necessidades do Postgres.
por 06.05.2009 / 06:14
2

Em relação às permissões, basta abrir o dump do banco de dados (é texto sem formatação) e procurar as linhas nas quais ele tenta alterar o usuário atual ou define o proprietário de uma tabela. Em seguida, basta pesquisar / substituir e substituir o proprietário original pelo novo nome de usuário. Não precisa se preocupar em conceder / alterar permissões: D

Costumávamos fazer isso o tempo todo, quando passávamos do desenvolvedor para a produção, o db / table owner original seria o desenvolvedor e precisávamos mudar isso para a conta do cliente quando estivéssemos prontos para o lançamento.

Sempre trabalhamos no console usando pg_dump e outras ferramentas de linha de comando relacionadas, mas espero que esses map sejam as opções que você tem na interface da web.

    
por 06.05.2009 / 07:47
2
A exportação do

phpPgAdmin usa o pg_dump. Você pode ler sobre isso se quiser saber o que está fazendo.

Você também pode querer exportá-lo como SQL em vez de COPY. COPY é para o Postgres e você precisará do SQL se quiser tentar usar um banco de dados diferente. Também é mais fácil entender se você está acostumado a diferentes bancos de dados.

O que você obterá com 'Structure and Data' é um arquivo sql que iniciará com a estrutura da tabela do banco de dados, depois todos os dados, restrições e chaves.

Como Sascha apontou, você pode estar tendo problemas com as permissões. Eu sempre achei mais fácil excluir apenas as linhas de permissão ou comentá-las, pois isso é apenas para um banco de dados de desenvolvimento. Remova / comente / mude as linhas com 'OWNER' nelas. Como

ALTER TABLE schema.table OWNER TO pguser;

Cada instrução CREATE TABLE terá um desses depois para definir o proprietário da tabela.

IMPORTANDO

Se você tem erros de SQL (que tenho visto com bastante frequência, dependendo dos dados. Strings com caracteres ímpares podem ser uma dor), pode ser mais fácil dividir o arquivo e simplesmente copiar a estrutura primeiro e executar essa como uma consulta SQL padrão. Em seguida, comece com os dados e importe-os uma tabela por vez. Isso torna muito mais fácil encontrar o erro quando você o corta em partes. Especialmente ao lidar com as mensagens de erro muito inúteis.

Sim, há muito trabalho de copiar e colar, mas o trabalho é feito e provavelmente levará menos tempo do que o portando para o MySQL e depois terá que alterar o PHP para se conectar e obter dados do MySQL em vez do Postgres.

PhpPgAdmin e pgadminIII têm a capacidade de executar instruções SQL.

pgAdminIII - > selecione banco de dados - > selecione o botão "Executar arbitrariamente consultas SQL". PhpPgAdmin - > selecione banco de dados - > selecione o link 'SQL'.

Honestamente, esta é a maneira menos irritante de mover bancos de dados que encontrei. Leva mais tempo, mas somente se você não encontrar erros.

    
por 11.05.2009 / 18:52
0

Corra, não se afaste do seu provedor de hospedagem. Você quer acesso direto aos dados não apenas pelo phppgadmin.

O phppgadmin (assim como o phpmyadmin) nesses casos tem um problema enorme. Você não será capaz de obter lixões.

Raciocínio: com PHP e apache, você tem um max. tempo de execução, bem como um limite de memória para os scripts em execução. Pode não ser um problema agora em termos de tempo de execução / memória agora, mas à medida que seu banco de dados cresce, você irá encontrá-lo.

Para obter um bom despejo, você precisará pelo menos acessar o banco de dados (que deve, se o banco de dados estiver diretamente exposto à rede, ser protegido por SSL). Seja através de SSH ou diretamente através do psql, caso contrário eu realmente não vejo uma boa opção para obter dumps. phppgadmin (ou phpmyadmin) pode ser conveniente para navegar pelo DB fazer algumas mudanças, fazer alguns (menores) selects e assim por diante, mas não se você precisar obter grandes quantidades de dados.

As duas ferramentas falharam em várias ocasiões com tempos limite do PHP ou uso excessivo de memória ao fazer backups / restaurações.

Quanto a um guia, como fazer backup da documentação original do postgres, geralmente é muito bom: link

Agora, para o seu problema, como obter um bom despejo de banco de dados:

  • Use o formato SQL "normal" (sim, os documentos dizem que é muito mais lento, mas achei que fosse a opção mais confiável)
  • Não "mostre" o despejo no phppgadmin, mas baixe-o (gzipado ou não pode ou não funcionar dependendo da instalação do php e do tempo que leva para criar o dump, na verdade o mesmo vale para o "show "opção)

Eu não posso enfatizar o suficiente para ter acesso SSH ou psql diretamente ao host. Se o seu provedor de hospedagem não lhe der acesso, configure um PostgreSQL local para criar um banco de dados de playground e enviá-lo o comando pg_dump que você deseja usar, deixe-os colocá-lo em um diretório protegido por SSL e senha e baixe-o de lá.

    
por 12.06.2009 / 00:44