This project is a web-based application that facilitates data ingestion between a ClickHouse database and Flat Files.
- Bidirectional data flow (ClickHouse <-> Flat File).
- JWT token authentication for ClickHouse as a source.
- Dynamic table and column selection from the source.
- Ingestion progress status and completion reporting (record count).
- Basic error handling.
- (Optional) Data preview.
- Backend: Java 17, Spring Boot 3.x
- Frontend: HTML, CSS, JavaScript, Thymeleaf
- Database: ClickHouse
- Build Tool: Maven
- Libraries:
spring-boot-starter-web: For building web applications.spring-boot-starter-thymeleaf: For server-side HTML templating.clickhouse-jdbc: Official ClickHouse JDBC driver (usingallclassifier for dependencies).opencsv: For reading/writing CSV files.
-
Prerequisites:
- Java Development Kit (JDK) 17 or later.
- Maven 3.6 or later.
- Access to a ClickHouse instance (local via Docker or cloud).
- (Optional) Load ClickHouse example datasets (
uk_price_paid,ontime).
-
Clone the repository:
git clone <repository-url> cd integration-tool
-
Build the project:
mvn clean package
- Connection details (ClickHouse host, port, database, user, token, Flat File path, delimiter) are configured via the web UI.
- Default application settings can be reviewed in
src/main/resources/application.properties(though UI inputs take precedence for connections).
- Run using Spring Boot Maven plugin:
mvn spring-boot:run
- Run the packaged JAR:
java -jar target/integration-tool-1.0-SNAPSHOT.jar
Once running, access the application in your web browser, typically at http://localhost:8080.
- Open the application in your browser.
- Select the ingestion direction (ClickHouse to Flat File or vice-versa).
- Enter the required connection parameters for the source.
- ClickHouse as Source:
- Click "Connect & List Tables".
- Select the desired table from the dropdown.
- Click "Load Columns".
- Select the columns you want to ingest.
- Enter the target Flat File path and delimiter.
- Flat File as Source:
- Provide Flat File details (path, delimiter).
- Specify target ClickHouse table details.
- Column mapping/selection will be required.
- (Optional) Click "Preview Data" to see the first 100 records.
- Click "Start Ingestion".
- Monitor the status and view the results (record count or error message).
