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
postgresqlpara leer los datos - Usa la cláusula
INTO OUTFILE _filename_ FORMATy 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/ | shExportar 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 -lSin embargo, podríamos enviar fácilmente las filas a un script de shell, un script de Python o cualquier otro proceso que se desee.