Como posso escrever um procedimento armazenado que importa dados de um arquivo CSV e preenche a tabela?
postgresql
csv
postgresql-copy
vardhan
fonte
fonte
Respostas:
Dê uma olhada neste pequeno artigo .
Solução parafraseada aqui:
Crie sua tabela:
Copie dados do seu arquivo CSV para a tabela:
fonte
COPY zip_codes FROM '/path/to/csv/ZIP_CODES.txt' DELIMITER ',' CSV HEADER;
postgresql.org/docs/9.1/static/sql-copy.htmlSe você não tem permissão para usar
COPY
(que funciona no servidor db), poderá usá-lo\copy
(que funciona no cliente db). Usando o mesmo exemplo que Bozhidar Batsov:Crie sua tabela:
Copie dados do seu arquivo CSV para a tabela:
Você também pode especificar as colunas para ler:
Consulte a documentação para COPY :
e observe:
fonte
COPY
e\copy
é muito mais do que apenas permissões, e você não pode simplesmente adicionar um `` para fazê-lo funcionar magicamente. Veja a descrição (no contexto da exportação) aqui: stackoverflow.com/a/1517692/157957Uma maneira rápida de fazer isso é com a biblioteca pandas Python (a versão 0.15 ou superior funciona melhor). Isso tratará da criação das colunas para você - embora, obviamente, as escolhas feitas para os tipos de dados possam não ser o que você deseja. Se isso não der certo, você sempre poderá usar o código 'create table' gerado como modelo.
Aqui está um exemplo simples:
E aqui está um código que mostra como definir várias opções:
fonte
if_exists
parâmetro pode ser configurado para substituir ou acrescentar a uma tabela existente, por exemplo,df.to_sql("fhrs", engine, if_exists='replace')
df.to_sql()
é realmente lento, você pode usard6tstack.utils.pd_to_psql()
a partir d6tstack ver comparação de desempenhoVocê também pode usar o pgAdmin, que oferece uma GUI para fazer a importação. Isso é mostrado neste tópico SO . A vantagem de usar o pgAdmin é que ele também funciona para bancos de dados remotos.
Assim como as soluções anteriores, você precisaria já ter sua tabela no banco de dados. Cada pessoa tem sua própria solução, mas o que eu costumo fazer é abrir o CSV no Excel, copiar os cabeçalhos, colar especial com transposição em uma planilha diferente, colocar o tipo de dados correspondente na próxima coluna e copiar e colar em um editor de texto juntamente com a consulta de criação de tabela SQL apropriada, da seguinte maneira:
fonte
A maioria das outras soluções aqui exige que você crie a tabela antecipadamente / manualmente. Isso pode não ser prático em alguns casos (por exemplo, se você tiver muitas colunas na tabela de destino). Portanto, a abordagem abaixo pode ser útil.
Fornecendo o caminho e a contagem de colunas do seu arquivo csv, você pode usar a seguinte função para carregar sua tabela em uma tabela temporária denominada como
target_table
:Presume-se que a linha superior tenha os nomes das colunas.
fonte
public
)Como Paulo mencionou, a importação funciona no pgAdmin:
clique com o botão direito na tabela -> importar
selecione o arquivo local, formato e codificação
aqui está uma captura de tela alemã da pgAdmin GUI:
coisa semelhante que você pode fazer com o DbVisualizer (eu tenho uma licença, não tenho certeza da versão gratuita)
clique com o botão direito do mouse em uma tabela -> Importar Dados da Tabela ...
fonte
fonte
crie uma tabela primeiro
Em seguida, use o comando copy para copiar os detalhes da tabela:
copiar table_name (C1, C2, C3 ....)
do 'caminho para o arquivo csv' delimitador ',' cabeçalho csv;
obrigado
fonte
Use este código SQL
a palavra-chave do cabeçalho informa ao DBMS que o arquivo csv possui um cabeçalho com atributos
para mais informações, visite http://www.postgresqltutorial.com/import-csv-file-into-posgresql-table/
fonte
Experiência pessoal com o PostgreSQL, ainda esperando por um caminho mais rápido.
1. Crie o esqueleto da tabela primeiro se o arquivo estiver armazenado localmente:
2. Quando o \ path \ xxx.csv estiver no servidor, o postgreSQL não tem permissão para acessar o servidor, você precisará importar o arquivo .csv através da funcionalidade incorporada no pgAdmin.
Clique com o botão direito do mouse no nome da tabela, escolha importar.
Se você ainda tiver problemas, consulte este tutorial. http://www.postgresqltutorial.com/import-csv-file-into-posgresql-table/
fonte
Como importar dados do arquivo CSV para uma tabela do PostgreSQL?
passos:
Precisa conectar o banco de dados postgresql no terminal
Precisa criar banco de dados
Precisa criar usuário
Conectar-se ao banco de dados
Precisa criar esquema
Precisa criar tabela
Importar dados do arquivo csv para o postgresql
Encontre os dados da tabela fornecidos
fonte
IMHO, a maneira mais conveniente é seguir " Importar dados CSV para o postgresql, da maneira mais confortável ;-) ", usando csvsql do csvkit , que é um pacote python instalável via pip.
fonte
No Python, você pode usar este código para criação automática de tabela do PostgreSQL com nomes de colunas:
Também é relativamente rápido, posso importar mais de 3,3 milhões de linhas em cerca de 4 minutos.
fonte
Você também pode usar pgfutter ou, melhor ainda, pgcsv .
pgfutter é um buggy, recomendo pgcsv.
Aqui está como fazer isso com o pgcsv:
fonte
Se você precisar de um mecanismo simples para importar de texto / analisar CSV multilinhas, poderá usar:
DBFiddle Demo
fonte
O DBeaver Community Edition (dbeaver.io) facilita a conexão com um banco de dados e depois importa um arquivo CSV para upload para um banco de dados PostgreSQL. Também facilita a emissão de consultas, a recuperação de dados e o download de conjuntos de resultados para CSV, JSON, SQL ou outros formatos de dados comuns.
É uma ferramenta de banco de dados multi-plataforma FOSS para programadores, DBAs e analistas de SQL que suporta todos os bancos de dados populares: MySQL, PostgreSQL, SQLite, Oracle, DB2, SQL Server, Sybase, MS Access, Teradata, Firebird, Hive, Presto, etc. É um concorrente viável do FOSS para o TOAD para Postgres, o TOAD para SQL Server ou o Toad para Oracle.
Não tenho afiliação com o DBeaver. Adoro o preço (GRATUITO!) E a funcionalidade completa, mas desejo que eles abram mais esse aplicativo DBeaver / Eclipse e facilitem a adição de widgets de análise ao DBeaver / Eclipse, em vez de exigir que os usuários paguem apenas US $ 199 por assinatura anual para criar gráficos e tabelas diretamente dentro do aplicativo. Minhas habilidades de codificação Java estão enferrujadas e não me apetece levar semanas para reaprender a criar widgets do Eclipse (apenas para descobrir que o DBeaver provavelmente desativou a capacidade de adicionar widgets de terceiros ao DBeaver Community Edition.)
Os usuários avançados do DBeaver, que são desenvolvedores de Java, podem fornecer algumas dicas sobre as etapas para criar widgets de análise para adicionar ao Community Edition do DBeaver?
fonte
Crie a tabela e tenha colunas necessárias que são usadas para criar a tabela no arquivo csv.
Abra o postgres e clique com o botão direito na tabela de destino que você deseja carregar e selecione importar e Atualize as seguintes etapas na seção de opções de arquivo
Agora procure seu arquivo no nome do arquivo
Selecione csv no formato
Codificação como ISO_8859_5
Agora vá para Misc. opções e verifique o cabeçalho e clique em importar.
fonte
Criei uma pequena ferramenta que importa
csv
arquivos para o PostgreSQL super fácil, apenas um comando e ele criará e preencherá as tabelas, infelizmente, no momento todos os campos criados automaticamente usam o tipo TEXTA ferramenta pode ser encontrada em https://github.com/eduardonunesp/csv2pg
fonte
psql -h 192.168.99.100 -U postgres mydatabase -c "COPY users FROM 'users.csv' DELIMITER ';' CSV"
? Eu acho que a parte onde ele cria a tabela é bom, mas uma vez que cada campo é um texto que não é super útil