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