Casi cualquier formato JSON utilizado para la importación también puede usarse para la exportación. El más popular es JSONEachRow:
SELECT * FROM sometable FORMAT JSONEachRow
{"path":"Bob_Dolman","month":"2016-11-01","hits":245}
{"path":"1-krona","month":"2017-01-01","hits":4}
{"path":"Ahmadabad-e_Kalij-e_Sofla","month":"2017-01-01","hits":3}
O también podemos usar JSONCompactEachRow para ahorrar espacio en disco al omitir los nombres de las columnas:
SELECT * FROM sometable FORMAT JSONCompactEachRow
["Bob_Dolman", "2016-11-01", 245]
["1-krona", "2017-01-01", 4]
["Ahmadabad-e_Kalij-e_Sofla", "2017-01-01", 3]
Forzar los tipos de datos como cadenas
ClickHouse respeta los tipos de datos y exporta JSON de acuerdo con los estándares. Pero, cuando necesitamos que todos los valores se codifiquen como cadenas, podemos usar el formato JSONStringsEachRow:
SELECT * FROM sometable FORMAT JSONStringsEachRow
{"path":"Bob_Dolman","month":"2016-11-01","hits":"245"}
{"path":"1-krona","month":"2017-01-01","hits":"4"}
{"path":"Ahmadabad-e_Kalij-e_Sofla","month":"2017-01-01","hits":"3"}
Ahora, la columna numérica hits está codificada como una cadena. La exportación como cadenas es compatible con todos los formatos JSON*; basta con revisar los formatos JSONStrings\* y JSONCompactStrings\*:
SELECT * FROM sometable FORMAT JSONCompactStringsEachRow
["Bob_Dolman", "2016-11-01", "245"]
["1-krona", "2017-01-01", "4"]
["Ahmadabad-e_Kalij-e_Sofla", "2017-01-01", "3"]
El formato JSON general, muy utilizado en aplicaciones, exporta no solo los datos resultantes, sino también los tipos de las columnas y las estadísticas de la consulta:
SELECT * FROM sometable FORMAT JSON
{
"meta":
[
{
"name": "path",
"type": "String"
},
...
],
"data":
[
{
"path": "Bob_Dolman",
"month": "2016-11-01",
"hits": 245
},
...
],
"rows": 3,
"statistics":
{
"elapsed": 0.000497457,
"rows_read": 3,
"bytes_read": 87
}
}
El formato JSONCompact mostrará los mismos metadatos, pero utilizará una representación compacta para los propios datos:
SELECT * FROM sometable FORMAT JSONCompact
{
"meta":
[
{
"name": "path",
"type": "String"
},
...
],
"data":
[
["Bob_Dolman", "2016-11-01", 245],
["1-krona", "2017-01-01", 4],
["Ahmadabad-e_Kalij-e_Sofla", "2017-01-01", 3]
],
"rows": 3,
"statistics":
{
"elapsed": 0.00074981,
"rows_read": 3,
"bytes_read": 87
}
}
Considere las variantes JSONStrings o JSONCompactStrings para codificar todos los valores como cadenas.
Una forma más eficiente de obtener los datos junto con su estructura es usar el formato JSONCompactEachRowWithNamesAndTypes:
SELECT * FROM sometable FORMAT JSONCompactEachRowWithNamesAndTypes
["path", "month", "hits"]
["String", "Date", "UInt32"]
["Bob_Dolman", "2016-11-01", 245]
["1-krona", "2017-01-01", 4]
["Ahmadabad-e_Kalij-e_Sofla", "2017-01-01", 3]
Se utilizará un formato JSON compacto precedido por dos filas de encabezado con nombres de columnas y tipos. Luego, este formato puede usarse para ingestar datos en otra instancia de ClickHouse (u otras aplicaciones).
Exportación de JSON a un archivo
Para guardar los datos JSON exportados en un archivo, podemos usar la cláusula INTO OUTFILE:
SELECT * FROM sometable INTO OUTFILE 'out.json' FORMAT JSONEachRow
36838935 rows in set. Elapsed: 2.220 sec. Processed 36.84 million rows, 1.27 GB (16.60 million rows/s., 572.47 MB/s.)
ClickHouse tardó solo 2 segundos en exportar casi 37 millones de registros a un archivo JSON. También podemos exportar usando una cláusula COMPRESSION para activar la compresión durante la exportación:
SELECT * FROM sometable INTO OUTFILE 'out.json.gz' FORMAT JSONEachRow
36838935 rows in set. Elapsed: 22.680 sec. Processed 36.84 million rows, 1.27 GB (1.62 million rows/s., 56.02 MB/s.)
Tarda más en completarse, pero genera un archivo comprimido mucho más pequeño:
2.2G out.json
576M out.json.gz
Última modificación el 10 de junio de 2026