Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

¿Cómo exportar datos de PostgreSQL a Parquet, CSV o JSON?

Cómo exportar datos de PostgreSQL a Parquet, CSV o JSON

Esto se hace fácilmente con clickhouse-local:

  • Usa la función de tabla postgresql para leer los datos
  • Usa la cláusula INTO OUTFILE _filename_ FORMAT y especifica el formato de salida que quieras

El formato de salida puede ser cualquiera de los formatos de salida admitidos en ClickHouse. Veamos algunos ejemplos…

Estos ejemplos usan clickhouse-local, que forma parte del binario de ClickHouse. Descárgalo con lo siguiente:

curl https://clickhouse.com/ | sh

Exportar de PostgreSQL a Parquet

La función de tabla postgresql permite realizar consultas SELECT (e INSERT) sobre datos almacenados en un servidor PostgreSQL remoto. Por ejemplo, para ver el contenido completo de una tabla en PostgreSQL:

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

Podemos redirigir la salida de esta consulta a un archivo usando INTO OUTFILE. Usa FORMAT para especificar el formato del archivo que se va a crear. Vamos a tomar todo el contenido de la tabla de PostgreSQL y enviarlo a un archivo Parquet:

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

Exportar PostgreSQL a CSV

Es igual que con Parquet, salvo que aquí especificamos un nombre de archivo más adecuado para la salida:

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

¡Eso es todo! ClickHouse detecta la extensión .csv en el nombre del archivo de salida y exporta los datos en formato CSV. Por lo demás, es exactamente el mismo comando que el anterior.

Exportar de PostgreSQL a JSON

Para pasar de PostgreSQL a JSON, basta con cambiar el nombre del archivo y ClickHouse detectará el formato:

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

Canalizar PostgreSQL a otro proceso

En lugar de usar INTO OUTFILE, puede canalizar los resultados de una función de tabla a otro proceso. Aquí tiene un ejemplo sencillo para ilustrar la sintaxis: contamos el número de filas con el comando de 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

Sin embargo, podríamos enviar fácilmente las filas a un script de shell, un script de Python o cualquier otro proceso que se desee.

Navigation