PostgreSQL Copy
Resumo
- Copia dados entre um arquivo/programa para uma tabela PostgreSQL.
Parâmetros
Parâmetro | Tipo | Escolhas | Valor Padrão | Comentários |
|---|---|---|---|
columns | list | | Lista de nomes de colunas da tabela src / dst para COPIAR DE / PARA. aliases: column |
copy_from | path | | Copia dados de um arquivo para uma tabela (adicionando os dados para o que já existe na tabela). Mutuamente exclusivo com copy_to e src. aliases: from |
copy_to | path | | Copia o conteúdo de uma tabela para um arquivo. Também é possível copiar os resultados de uma consulta SELECT. Mutuamente exclusivo com copy_from e dst. aliases: to |
db | string | | Nome do banco de dados utilizado para se conectar. aliases: login_db |
dst | string | | Copia dados para dst=nome_da_tabela de copy_from=/caminho/para/dados.arquivo. Usado com copy_from somente. aliases: destination |
options | dictionary | | Opções do comando COPY. Veja a lista completa de opções disponíveis https://www.postgresql.org/docs/current/sql-copy.html. |
program | boolean | | Marca src/dst como um programa. Os dados serão copiados de/para um programa. Veja os exemplos de blocos e a descrição do argumento do PROGRAM https://www.postgresql.org/docs/current/sql-copy.html. |
session_role | string | | Muda para session_role após conectar. O session_role especificado deve ser uma função da qual o login_user atual é membro. A verificação de permissões para comandos SQL é realizada como se o session_role fosse aquele que havia efetuado login originalmente. |
src | string | | Copia os dados de copy_from para src=tablename. Usado apenas com copy_to. aliases: source |
trust_input | boolean | Escolhas:
| Caso use 'no', verifica se os valores dos parâmetros são potencialmente perigosos. Faz sentido usar 'no' apenas quando as injeções de SQL são possíveis. |
Extende fragmentos da documentação do módulo PostgreSQL Base
Notas
- Suporta PostgreSQL versão 9.4+.
- O comando COPY só é permitido para superusuários do banco de dados.
- Se check_mode=yes, apenas verificamos a disponibilidade da tabela src/dst e retornamos a consulta COPY que realmente não foi executada.
- Se i(check_mode=yes) e a origem tiver sido passada como SQL, o módulo irá executá-lo e reverter a transação, mas preste atenção, isso pode afetar o desempenho do banco de dados (por exemplo, se SQL coletar muitos dados).
- A autenticação padrão assume que você está fazendo login ou usando login sudo na conta do postgres no host.
- Para evitar o erro “Peer authentication failed for user postgres”, use o usuário postgres como um become_user.
- Se o host remoto for o servidor PostgreSQL (que é o caso padrão), o PostgreSQL também deve ser instalado no host remoto.
- O parâmetro ca_cert requer pelo menos Postgres versão 8.4.
Exemplos
- name: Copia dados separados por TAB de texto do arquivo /tmp/data.txt para a tabela acme
postgresql_copy:
copy_from: /tmp/data.txt
dst: acme
- name: Copia dados CSV (separados por vírgula) do arquivo /tmp/data.csv para as colunas id, nome da tabela acme
postgresql_copy:
copy_from: /tmp/data.csv
dst: acme
columns: id,name
options:
format: csv
- name: >
Copia dados separados por barras verticais de texto do arquivo /tmp/data.txt para a tabela bar.
Os valores NULL são especificados como N
postgresql_copy:
copy_from: /tmp/data.csv
dst: bar
options:
delimiter: '|'
null: 'N'
- name: Copia os dados da tabela acme para o arquivo /tmp/data.txt em formato de texto, separados por TAB
postgresql_copy:
src: acme
copy_to: /tmp/data.txt
- name: Copia os dados da consulta SELECT para /tmp/data.csv no formato CSV
postgresql_copy:
src: 'SELECT * FROM acme'
copy_to: /tmp/data.csv
options:
format: csv
- name: Copia dados CSV de my_table para gzip
postgresql_copy:
src: my_table
copy_to: 'gzip > /tmp/data.csv.gz'
program: yes
options:
format: csv
- name: >
Copia os dados das colunas id, name da tabela bar para /tmp/data.txt.
O formato de saída é texto, separado por barras verticais, NULL como N
postgresql_copy:
src: bar
columns:
- id
- name
copy_to: /tmp/data.csv
options:
delimiter: '|'
null: 'N'
Valores retornados
Chave | Tipo | Retornado quando | Descrição |
|---|---|---|---|
dst | string | sempre | Destino dos dados. Exemplo: /tmp/data.csv |
queries | string | sempre | Lista de consultas executadas. Exemplo: ["COPY test_table FROM '/tmp/data_file.txt' (FORMAT csv, DELIMITER ',', NULL 'NULL')"] |
src | string | sempre | Fonte dos dados. Exemplo: mytable |