Uso do comando \copy para importar dados em uma tabela em uma instância de banco de dados PostgreSQL
O comando \copy
do PostgreSQL é um meta-comando disponível a partir da ferramenta cliente interativa psql
. Você pode usar \copy
para importar dados para uma tabela na instância de banco de dados do RDS para PostgreSQL Para usar o comando \copy
, você precisa primeiro criar a estrutura da tabela na instância de banco de dados de destino para que \copy
tenha um destino para os dados que estão sendo copiados.
Você pode usar \copy
para carregar dados de um arquivo de valores separados por vírgulas (CSV), como um que foi exportado e salvo na estação de trabalho do cliente.
Para importar os dados CSV para a instância de banco de dados do RDS para PostgreSQL de destino, primeiro conecte-se à instância de banco de dados de destino usando psql
.
psql --host=
db-instance.111122223333
.aws-region
.rds.amazonaws.com --port=5432 --username=postgres
--password --dbname=target-db
Você então executa \copy
com os parâmetros a seguir para identificar o destino para os dados e seu formato.
-
target_table
– O nome da tabela que deve receber os dados que estão sendo copiados do arquivo CSV. -
column_list
– Especificações da coluna para a tabela. -
'filename'
– O caminho completo para o arquivo CSV na estação de trabalho local.
\copy
target_table
from '/path/to/local/filename.csv
' WITH DELIMITER ',' CSV;
Se o arquivo CSV tiver informações de cabeçalho de coluna, você poderá usar esta versão do comando e dos parâmetros.
\copy
target_table
(column-1
,column-2
,column-3
,...
) from '/path/to/local/filename.csv
' WITH DELIMITER ',' CSV HEADER;
Se o comando \copy
falhar, o PostgreSQL gera mensagens de erro.
Criar uma instância de banco de dados no comando psql
do Ambiente de Pré-visualização do Banco de Dados com o metacomando \copy
, conforme mostrado nos exemplos a seguir. Este exemplo usa source-table como o nome da tabela de origem, source-table.csv como o arquivo .csv e target-db como o banco de dados de destino:
Para Linux, macOS ou Unix:
$psql target-db \ -U <admin user> \ -p <port> \ -h <DB instance name> \ -c "\copy source-table from 'source-table.csv' with DELIMITER ','"
Para Windows:
$psql target-db ^ -U <admin user> ^ -p <port> ^ -h <DB instance name> ^ -c "\copy source-table from 'source-table.csv' with DELIMITER ','"
Para obter detalhes completos sobre o comando \copy
, consulte a página psql