> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-detect-table-modification.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentation for Odbc Bridge

# clickhouse-odbc-bridge

Simple HTTP-server which works like a proxy for ODBC driver. The main motivation
was possible segfaults or another faults in ODBC implementations, which can
crash whole clickhouse-server process.

This tool works via HTTP, not via pipes, shared memory, or TCP because:

* It's simpler to implement
* It's simpler to debug
* jdbc-bridge can be implemented in the same way

<h2 id="usage">
  Usage
</h2>

`clickhouse-server` use this tool inside odbc table function and StorageODBC.
However it can be used as standalone tool from command line with the following
parameters in POST-request URL:

* `connection_string` -- ODBC connection string.
* `sample_block` -- columns description in ClickHouse NamesAndTypesList format, name in backticks,
  type as string. Name and type are space separated, rows separated with
  newline.
* `max_block_size` -- optional parameter, sets maximum size of single block.
  Query is send in post body. Response is returned in RowBinary format.

<h2 id="example">
  Example:
</h2>

```bash theme={null}
$ clickhouse-odbc-bridge --http-port 9018 --daemon

$ curl -d "query=SELECT PageID, ImpID, AdType FROM Keys ORDER BY PageID, ImpID" --data-urlencode "connection_string=DSN=ClickHouse;DATABASE=stat" --data-urlencode "sample_block=columns format version: 1
3 columns:
\`PageID\` String
\`ImpID\` String
\`AdType\` String
"  "http://localhost:9018/" > result.txt

$ cat result.txt
12246623837185725195925621517
```
