- Resources
- Engineering
ClickHouse engineering resources
When to denormalize, when to join: A ClickHouse guide
Denormalization and normalization are both valid analytical data-modeling strategies. A decision framework for choosing where to denormalize, where to join, and which ClickHouse primitives bridge the gap.
Last updated: Jun 26, 2026
How to scale vector search in Postgres (pgvector) for RAG and AI agents: memory limits, filtering, and when to go hybrid
Scale vector search in Postgres with pgvector: avoid HNSW RAM limits, fix filtering recall, and know when to go hybrid. Read now.
Last updated: Jun 18, 2026
How to query a REST API in Python
Read a JSON API response into a DataFrame with chDB. Use the pandas API you already know to filter and aggregate the response, running on ClickHouse's engine with no server to start.
Last updated: Jun 15, 2026
How to convert Parquet to ORC
Convert a Parquet file to ORC with one clickhouse-local command. The schema is read from the Parquet footer and the types carry into ORC, with no server and no upload.
Last updated: Jun 6, 2026
How to query a REST API with SQL
Run SQL straight against a live JSON or CSV HTTP endpoint with clickhouse local — fetch, filter, aggregate and join the response in one statement, with no download step.
Last updated: Jun 15, 2026
Parse url-encoded form data with SQL
Turn an application/x-www-form-urlencoded body like a=1&b=hello into a queryable row with clickhouse local, with no parsing code and no import step.
Last updated: Jun 15, 2026
What is Protobuf?
Protobuf (Protocol Buffers) is a schema-first, compact binary serialization format. This page explains its structure, the .proto schema requirement, and proves it by writing and reading a real Protobuf file.
Last updated: Jun 15, 2026
Run SQL across multiple CSV or Parquet files
Query a whole directory of CSV or Parquet files as one table with clickhouse-local. A glob path reads them all, aggregates run across every file, and a virtual column tells you which file each row came from.
Last updated: Jun 15, 2026
Read Avro from a schema registry with clickhouse-local
Read a plain .avro file with one command, and use the AvroConfluent format plus format_avro_schema_registry_url to read Confluent-framed Avro messages from a Kafka Schema Registry.
Last updated: Jun 15, 2026
How to query a mysqldump file without importing
Run SQL against the tables inside a mysqldump .sql file directly with clickhouse-local. No MySQL server, no restore step — the INSERT statements are read as a table.
Last updated: Jun 15, 2026
How to convert Avro to JSON
Convert an Avro file to JSON with one command using clickhouse-local. The schema is read from the Avro file itself, types are carried into JSON, and there is no upload and no server.
Last updated: Jun 15, 2026
How to read a RowBinary file
Read a ClickHouse RowBinary file from your terminal with one command, using clickhouse local. RowBinaryWithNamesAndTypes is self-describing; plain RowBinary needs an explicit structure.
Last updated: Jun 15, 2026
How to read a ClickHouse Native format file
Open and query a ClickHouse Native (.native) file from your terminal with one command, using clickhouse local. The file carries its own schema, so reads need no types and lose no precision.
Last updated: Jun 15, 2026
How to convert TSV to JSON
Convert a TSV file to JSON from your terminal with clickhouse-local — the header becomes the keys and types are inferred, with no upload and no server.
Last updated: Jun 15, 2026
How to convert NDJSON to CSV
Convert a line-delimited NDJSON file to CSV from your terminal with clickhouse-local — schema auto-inferred, nested objects flattened, no server and no upload.
Last updated: Jun 15, 2026