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_aonde o campoidé maior que 100:
copy table_a to table_b where id > 100;
- Copiar todos os dados da tabela
table_aonde o camponamecontém a string “John”:
copy table_a to table_b where name like '%John%';
- Copiar todos os dados da tabela
table_aonde 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_aonde o campoidé maior que 100 e o camponamecontém a string “John”:
copy table_a to table_b where id > 100 and name like '%John%';
- Exportar todos os dados da tabela
table_apara um arquivo CSV chamadotable_a.csv:
copy table_a to 'table_a.csv' with csv header;
- Exportar todos os dados da tabela
table_aonde 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_aonde o camponameconté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_aonde 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_aonde o campoidé maior que 100 e o camponameconté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%';
