#1
This guide shows how to migrate data and queries from MySQL to ClickHouse in Java applications with minimal effort.

1. Add Dependencies

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
    <groupId>com.clickhouse</groupId>
    <artifactId>clickhouse-jdbc</artifactId>
</dependency>

2. Connect to Both Databases

Connection mysql = DriverManager.getConnection(
    "jdbc:mysql://localhost:3306/db", "user", "pass");
Connection clickhouse = DriverManager.getConnection(
    "jdbc:clickhouse://localhost:8123/default");

3. Extract Data from MySQL

Statement stmt = mysql.createStatement();
ResultSet rs = stmt.executeQuery("SELECT id, name, amount FROM sales");

4. Insert into ClickHouse

PreparedStatement ps = clickhouse.prepareStatement(
    "INSERT INTO sales (id, name, amount) VALUES (?, ?, ?)"
);

while (rs.next()) {
    ps.setInt(1, rs.getInt("id"));
    ps.setString(2, rs.getString("name"));
    ps.setDouble(3, rs.getDouble("amount"));
    ps.addBatch();
}
ps.executeBatch();

5. Adjust Queries

  • Replace MySQL-specific syntax (like AUTO_INCREMENT) with ClickHouse equivalents.
  • Use MergeTree engines for performance.

image quote pre code