Eu tenho um esquema de banco de dados chamado: nyummy
e uma tabela chamada cimory
:
create table nyummy.cimory (
id numeric(10,0) not null,
name character varying(60) not null,
city character varying(50) not null,
CONSTRAINT cimory_pkey PRIMARY KEY (id)
);
Quero exportar os cimory
dados da tabela como inserir arquivo de script SQL. No entanto, eu só quero exportar registros / dados onde a cidade é igual a 'tokyo' (suponha que os dados da cidade sejam todos minúsculos).
Como fazer isso?
Não importa se a solução está em ferramentas GUI de freeware ou em linha de comando (embora a solução de ferramentas GUI seja melhor). Eu tentei o pgAdmin III, mas não consigo encontrar uma opção para fazer isso.
Respostas:
Crie uma tabela com o conjunto que você deseja exportar e, em seguida, use o utilitário de linha de comando pg_dump para exportar para um arquivo:
--column-inserts
irá despejar como comandos de inserção com nomes de colunas.--data-only
não despeje o esquema.Conforme comentado abaixo, a criação de uma exibição em vez de uma tabela evitará a criação da tabela sempre que uma nova exportação for necessária.
fonte
create view export_view...
, pois a visualização permaneceria atualizada com as alterações na tabela base. Os documentos dizem--table=table: Dump only tables (or **views**...
que eu tinha alguma esperança de que isso funcionasse, mas despejar uma exibição infelizmente não gera dados. : Ppg_dump --table=my_schema.my_view --data-only --inserts my_db > data.sql
versão 9.5.3 e minhacreate
declaração era a mesma que a sua, excetocreate view...
. Tudo o que recebo na saída são os comentários eSET
declarações habituais do pg_dump . Não tenho certeza de onde estou errado.Para um uso de exportação apenas de dados
COPY
.Você obtém um arquivo com uma linha da tabela por linha como texto sem formatação (não
INSERT
comandos), é menor e mais rápido:Importe o mesmo para outra tabela da mesma estrutura em qualquer lugar com:
COPY
escreve e lê arquivos locais para o servidor , ao contrário de programas clientes comopg_dump
oupsql
o que ler e escrever arquivos local para o cliente . Se os dois rodam na mesma máquina, não importa muito, mas é para conexões remotas.Há também o
\copy
comando do psql que:fonte
insert
comandos, não é?STDIN
eSTDOUT
pode ser usado no lugar do caminho do arquivo, útil para pequenas exportações de dados.--column-inserts
sinalizador, pg_dump usa umCOPY
de STDIN para cada uma das tabelas no código SQL gerado.Esta é uma maneira fácil e rápida de exportar uma tabela para um script com o pgAdmin manualmente sem instalações extras :
Esse método também funciona com a técnica de criar uma tabela export_ conforme demonstrado na resposta de @Clodoaldo Neto.
fonte
O SQL Workbench possui esse recurso.
Após executar uma consulta, clique com o botão direito do mouse nos resultados da consulta e escolha "Copiar dados como SQL> Inserir SQL"
fonte
Para o meu caso de uso, eu era capaz de simplesmente canalizar para grep.
fonte
Tentei escrever um procedimento para isso, com base nos códigos @PhilHibbs, de uma maneira diferente. Por favor, dê uma olhada e teste.
E depois :
testado no meu postgres 9.1, com uma tabela com tipo de dados de campo misto (texto, double, int, timestamp sem fuso horário, etc.).
É por isso que o CAST no tipo TEXT é necessário. Meu teste foi executado corretamente por cerca de 9 milhões de linhas, parece que falhou pouco antes dos 18 minutos de execução.
ps: Encontrei um equivalente para mysql na WEB.
fonte
Você pode visualizar a tabela com registros específicos e depois despejar o arquivo sql
fonte
Acabei de iniciar um procedimento rápido para fazer isso. Funciona apenas para uma única linha, portanto, crio uma exibição temporária que apenas seleciona a linha desejada e substituo o pg_temp.temp_view pela tabela real na qual desejo inserir.
Invocado assim:
Não testei isso contra ataques de injeção. Informe-me se a chamada quote_literal não for suficiente para isso.
Também funciona apenas para colunas que podem ser simplesmente convertidas em :: text e retornadas novamente.
Também é para o Greenplum, mas não consigo pensar em uma razão pela qual ele não funcionaria no Postgres, CMIIW.
fonte
você tentou no pgadmin executando a consulta com
" EXECUTE QUERY WRITE RESULT TO FILE "
opçãoé apenas exportar os dados, caso contrário tente
-t opção usada para ==> Despejar apenas tabelas (ou visualizações ou sequências) tabela correspondente, consulte
fonte
create view
instrução