Como importar e exportar dados CSV no PostgreSQL
Faça backup dos dados do Postgres, transfira-os para outro lugar e importe-os quando necessário, tudo com o poder do CSV.
Os arquivos CSV simplificam o processo de armazenamento de dados. Como o formato é baseado em linhas e colunas, o CSV se traduz bem em um banco de dados relacional.
É fácil importar um arquivo CSV para um banco de dados e exportar de um banco de dados para um arquivo CSV. Existem algumas técnicas diferentes que você pode usar para fazer isso com o PostgreSQL.
Crie um arquivo CSV
Aqui estão alguns exemplos de dados CSV que você pode usar para criar seu próprio arquivo CSV:
id,firstname,lastname,email
1,Riannon,Pulsifer,Riannon.Pulsifer@example.com
2,Moyna,Palocz,Moyna.Palocz@example.com
3,Roslyn,Bearnard,Roslyn.Bearnard@example.com
4,Gloria,Aldric,Gloria.Aldric@example.com
5,Felice,Greenwald,Felice.Greenwald@example.com
Antes de importar o arquivo CSV para o banco de dados PostgreSQL, você precisará criar uma tabela que corresponda ao formato do arquivo CSV. Use o código a seguir para criar uma tabela Postgres.
CREATE TABLE employees(id int NOT NULL,
firstname char(20),
lastname char(20),
email char(50));
Importar arquivos CSV para PostgreSQL
Você pode importar arquivos CSV para uma tabela Postgres no servidor ou em uma máquina cliente.
Importe arquivos CSV no lado do servidor
Para importar um arquivo CSV para um servidor PostgreSQL, use o comando PostgreSQL COPY e a palavra-chave FROM. Isso permite copiar dados de um arquivo CSV para uma tabela Postgres, desde que a estrutura corresponda. Use o código a seguir para copiar o arquivo CSV de amostra para a tabela funcionários:
COPY employees(id,firstname,lastname,email)
FROM '/tmp/sample.csv'
DELIMITER ','
CSV HEADER;
O caminho no exemplo acima é absoluto. Você pode usar um caminho relativo ao diretório de dados do Postgres, se preferir.
Você pode copiar os dados com ou sem cabeçalhos, então fique à vontade para omitir a última linha do código se não precisar deles.
Importe arquivos CSV no lado do cliente
Em uma máquina cliente, use o comando psql \copy para importar o arquivo CSV. Execute o código a seguir no prompt de comando do psql para copiar o arquivo CSV de amostra para a tabela funcionários.
\copy employees FROM '/tmp/sample.csv' DELIMITER ',' CSV HEADER;
Exportar arquivos CSV do PostgreSQL
Assim como na importação, você também pode exportar um arquivo CSV no lado do servidor ou no lado do cliente.
Exportar arquivos CSV no lado do servidor
Use o comando COPY e a palavra-chave TO para exportar os dados para um arquivo CSV. Você precisa especificar a tabela de origem e o caminho para o arquivo de destino. Desta vez, o caminho deve ser absoluto:
COPY employees TO '/tmp/employees.csv' CSV HEADER;
Se você precisar exportar apenas algumas linhas do banco de dados, use o comando SELECT da seguinte forma:
COPY (SELECT * FROM employees where firstname='Moyna') TO '/tmp/employees-moyna.csv' CSV HEADER;
Exportar arquivos CSV no lado do cliente
Para exportar dados no lado do cliente, use o comando \copy e a palavra-chave TO no prompt de comando do psql:
\copy employees TO 'path-to-file.csv' CSV header;
Usando um adaptador de banco de dados
Você não precisa usar o terminal para importar um arquivo CSV. Você pode importar os dados por meio de um objeto cursor usando sua linguagem de programação preferida. Por exemplo, se você trabalha com Python, você pode conectar-se ao servidor PostgreSQL e executar o comando COPY.
Para isso, você precisa conectar o Python ao Postgres através de um adaptador de banco de dados como o psycopg2.
pip install psycopg2
Conecte-se ao banco de dados usando o seguinte código:
import psycopg2;
connection = psycopg.connect(
database="employee_db",
host="localhost"
user="postgres",
password="password",
)
Em seguida, crie um objeto cursor e use-o para executar o comando COPY:
cursor = connection.cursor()
cursor.execute(
"COPY employees(id,firstname,lastname,email)
FROM '/tmp/sample.csv'
DELIMITER ','
CSV HEADER;"
)
connection.close()
Gerencie seus dados PostgreSQL com a conveniência do CSV
É um processo simples importar e exportar dados usando arquivos PostgreSQL e CSV. Você pode usar os comandos psql no cliente ou servidor ou usar um adaptador de banco de dados programaticamente.
Se você gosta mais de GUI, considere usar a ferramenta pgAdmin. É um aplicativo GUI de código aberto que pode ajudá-lo a importar e exportar dados com ainda mais facilidade.