JDBC driver for ClickHouse
This is a basic and restricted implementation of jdbc driver for ClickHouse. It has support of a minimal subset of features to be usable.
ru.yandex.clickhouse clickhouse-jdbc 0.2.5
URL syntax:
jdbc:clickhouse://:[/], e.g.
jdbc:clickhouse://localhost:8123/test
JDBC Driver Class:
ru.yandex.clickhouse.ClickHouseDriver
additionally, if you have a few instances, you can use
BalancedClickhouseDataSource.
In order to provide non-JDBC complaint data manipulation functionality, proprietary API exists. Entry point for API is
ClickHouseStatement#write()method.
import ru.yandex.clickhouse.ClickHouseStatement; ClickHouseStatement sth = connection.createStatement(); sth .write() // Write API entrypoint .table("default.my_table") // where to write data .option("format_csv_delimiter", ";") // specific param .data(new File("/path/to/file.csv"), ClickHouseFormat.CSV) // specify input .send();
import ru.yandex.clickhouse.ClickHouseStatement; ClickHouseStatement sth = connection.createStatement(); sth .write() .sql("INSERT INTO default.my_table (a,b,c)") .data(new MyCustomInputStream(), ClickHouseFormat.JSONEachRow) .addDbParam(ClickHouseQueryParam.MAX_PARALLEL_REPLICAS, 2) .send();
import ru.yandex.clickhouse.ClickHouseStatement; ClickHouseStatement sth = connection.createStatement(); sth.write().send("INSERT INTO test.writer", new ClickHouseStreamCallback() { @Override public void writeTo(ClickHouseRowBinaryStream stream) throws IOException { for (int i = 0; i < 10; i++) { stream.writeInt32(i); stream.writeString("Name " + i); } } }, ClickHouseFormat.RowBinary); // RowBinary or Native are supported
The driver is built with maven.
mvn package -DskipTests=true
To build a jar with dependencies use
mvn package assembly:single -DskipTests=true
In order to build the jdbc client one need to have jdk 1.7 or higher.