Os comandos copy
e \copy
no PostgreSQL são usados para copiar dados entre tabelas e arquivos. No entanto, existem algumas diferenças importantes entre os dois comandos.
Precisando de um servidor especifico para seu banco de dados? Fale conosco. www.soloweb.com.br
O comando copy
é um comando SQL que pode ser usado em qualquer cliente PostgreSQL. O comando \copy
é um comando específico do cliente psql, que é o cliente de linha de comando padrão do PostgreSQL.
O comando copy
é mais poderoso do que o comando \copy
. O comando copy
pode copiar dados de uma tabela para outra, de um arquivo para uma tabela e de uma tabela para um arquivo. O comando \copy
só pode copiar dados de uma tabela para um arquivo.
O comando copy
também é mais eficiente do que o comando \copy
. O comando copy
usa o formato de dados nativo do PostgreSQL para copiar os dados, o que é mais eficiente do que o formato de dados CSV usado pelo comando \copy
.
Em geral, o comando copy
é a melhor opção para copiar dados entre tabelas e arquivos no PostgreSQL. O comando \copy
só deve ser usado se você precisar copiar dados para um arquivo CSV.
Aqui está um exemplo de como usar o comando copy
para copiar dados de uma tabela para outra:
copy table_a to table_b;
Este comando copiará todos os dados da tabela table_a
para a tabela table_b
.
Aqui está um exemplo de como usar o comando \copy
para copiar dados de uma tabela para um arquivo:
\copy table_a to '/path/to/file.csv' with csv header;
Este comando copiará todos os dados da tabela table_a
para o arquivo /path/to/file.csv
. O parâmetro header
especifica que os cabeçalhos de coluna devem ser incluídos no arquivo.
Aqui estão mais alguns exemplos de como usar os comandos copy
e \copy
no PostgreSQL:
- Copiar dados de um arquivo para uma tabela:
copy table_a from '/path/to/file.csv' with csv header;
- Copiar dados de uma tabela para um arquivo, usando um formato de dados diferente:
copy table_a to '/path/to/file.txt' with csv header csv format;
- Copiar dados de uma tabela para outra, usando um filtro:
copy table_a to table_b where id > 100;
- Copiar dados de uma tabela para outra, usando uma cláusula ORDER BY:
copy table_a to table_b order by id;
- Copiar todos os dados da tabela
table_a
onde o campoid
é maior que 100:
copy table_a to table_b where id > 100;
- Copiar todos os dados da tabela
table_a
onde o camponame
contém a string “John”:
copy table_a to table_b where name like '%John%';
- Copiar todos os dados da tabela
table_a
onde o campocreated_at
é maior que a data atual:
copy table_a to table_b where created_at > now();
- Copiar todos os dados da tabela
table_a
onde o campoid
é maior que 100 e o camponame
contém a string “John”:
copy table_a to table_b where id > 100 and name like '%John%';
- Exportar todos os dados da tabela
table_a
para um arquivo CSV chamadotable_a.csv
:
copy table_a to 'table_a.csv' with csv header;
- Exportar todos os dados da tabela
table_a
onde o campoid
é maior que 100 para um arquivo CSV chamadotable_a_filtered.csv
:
copy table_a to 'table_a_filtered.csv' with csv header where id > 100;
- Exportar todos os dados da tabela
table_a
onde o camponame
contém a string “John” para um arquivo CSV chamadotable_a_filtered_john.csv
:
copy table_a to 'table_a_filtered_john.csv' with csv header where name like '%John%';
- Exportar todos os dados da tabela
table_a
onde o campocreated_at
é maior que a data atual para um arquivo CSV chamadotable_a_filtered_recent.csv
:
copy table_a to 'table_a_filtered_recent.csv' with csv header where created_at > now();
- Exportar todos os dados da tabela
table_a
onde o campoid
é maior que 100 e o camponame
contém a string “John” para um arquivo CSV chamadotable_a_filtered_john_recent.csv
:
copy table_a to 'table_a_filtered_john_recent.csv' with csv header where id > 100 and name like '%John%';