Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Como exportar dados do PostgreSQL para Parquet, CSV ou JSON?

Como exportar dados do PostgreSQL para Parquet, CSV ou JSON

Isso é fácil com clickhouse-local:

  • Use a função de tabela postgresql para ler os dados
  • Use a cláusula INTO OUTFILE _filename_ FORMAT e especifique o formato de saída desejado

O formato de saída pode ser qualquer um dos formatos de saída compatíveis com o ClickHouse. Vamos ver alguns exemplos…

Estes exemplos usam clickhouse-local, que faz parte do binário do ClickHouse. Baixe-o com o comando a seguir:

curl https://clickhouse.com/ | sh

Exportar o PostgreSQL para Parquet

A função de tabela postgresql permite executar consultas SELECT (e INSERT) em dados armazenados em um servidor PostgreSQL remoto. Por exemplo, para visualizar todo o conteúdo de uma tabela no PostgreSQL:

SELECT *
FROM
   postgresql(
    'localhost:5432',
    'postgres_database',
    'postgres_table',
    'user',
    'password'
);

Podemos redirecionar a saída desta consulta para um arquivo usando INTO OUTFILE. Use FORMAT para especificar o formato do arquivo que será criado. Vamos exportar todo o conteúdo da tabela PostgreSQL para um arquivo Parquet:

./clickhouse local -q "SELECT * FROM
   postgresql(
    'localhost:5432',
    'postgres_database',
    'postgres_table',
    'user',
    'password'
)
INTO OUTFILE 'my_output_file.parquet'"

Exportar PostgreSQL para CSV

É o mesmo processo do Parquet, exceto pelo fato de especificarmos um nome de arquivo mais apropriado para a saída:

./clickhouse local -q "SELECT * FROM
   postgresql(
    'localhost:5432',
    'postgres_database',
    'postgres_table',
    'user',
    'password'
)
INTO OUTFILE 'my_output_file.csv'"

É isso! O ClickHouse reconhece a extensão .csv no nome do arquivo de saída e exporta os dados como valores separados por vírgula. Fora isso, é exatamente o mesmo comando mostrado acima.

Exportar PostgreSQL para JSON

Para exportar do PostgreSQL para JSON, basta alterar o nome do arquivo, e o ClickHouse identificará o formato:

./clickhouse local -q "SELECT * FROM
   postgresql(
    'localhost:5432',
    'postgres_database',
    'postgres_table',
    'user',
    'password'
)
INTO OUTFILE 'my_output_file.ndjson'"

Enviar PostgreSQL para outro processo

Em vez de usar INTO OUTFILE, você pode enviar os resultados de uma função de tabela para outro processo. Aqui está um exemplo simples para demonstrar a sintaxe: contamos o número de linhas usando o comando Linux wc -l:

./clickhouse local -q "SELECT *
FROM s3('https://datasets-documentation.s3.eu-west-3.amazonaws.com/house_parquet/house_0.parquet'
FORMAT JSONEachRow
)" | wc -l

No entanto, poderíamos facilmente direcionar as linhas para um script de shell, um script Python ou qualquer outro processo que você quiser.

Navigation