Saltar al contenido principal

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'"
Como el nombre del archivo de salida tiene la extensión .parquet, ClickHouse asume que queremos el formato Parquet, así que fíjate en que omitimos la cláusula FORMAT 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'"
No tienes por qué detenerte aquí: puedes usar clickhouse-local para extraer datos de PostgreSQL y enviarlos a todos los formatos de salida.Si ClickHouse no puede determinar el formato de salida por la extensión del archivo, o si quieres elegir un formato específicamente, añade la cláusula FOMRAT:
./clickhouse local -q "SELECT * FROM
   postgresql(
    'localhost:5432',
    'postgres_database',
    'postgres_table',
    'user',
    'password'
)
INTO OUTFILE 'my_output_file.ndjson'
FORMAT JSONEachRow"

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.
Última modificación el 10 de junio de 2026