JDBC 開発ガイド: CData JDBC Driver for CSV を使った Spring Boot アプリケーション

CData JDBC ドライバーを使用すると、Java 開発者は CSV ファイルを含む270以上のデータソースに、データベースと同じ感覚でアプリケーションから接続できます。このガイドでは、CData JDBC Driver for CSV を使用して CSV ファイルからデータを読み取るシンプルな Spring Boot REST API の構築方法を解説します。

前提条件

  1. Java JDK 1.8+Oracle または OpenJDK からダウンロード)
  2. Maven(または Gradle)
  3. Spring Boot(このガイドでは Maven を使用します)
  4. CData JDBC Driver for CSVこちらからダウンロード
  5. CData ライセンスファイル(cdata.jdbc.csv.lic)
    • CData JDBC ドライバーをダウンロードしたら、ターミナルを開き、JDBC ドライバーのインストールディレクトリに移動して、次のコマンドを実行します: java -jar cdata.jdbc.csv.jar --license

      名前、メールアドレス、ライセンスキー(または TRIAL)を入力してください。

  6. サンプル CSV ファイル(例:/home/user/TestFolder または C:\TestFolder などのディレクトリに配置)(こちらからダウンロード

1. プロジェクトのセットアップ

以下の手順に従ってプロジェクトをセットアップしてください。完成したソースプロジェクトは、こちらからダウンロードすることもできます:cdata-jdbc-spring-boot.zip

a. Spring Boot プロジェクトの作成

Spring Initializr または IDE を使用して、以下の依存関係を持つ新しい Maven プロジェクトを作成します:

  • Spring Web
  • Spring JDBC

b. CData JDBC ドライバーをローカル Maven リポジトリに追加

CData JDBC Driver for CSV をダウンロードしたら、ファット JAR に含めるためにローカル Maven リポジトリにインストールします:

mvn install:install-file \ -Dfile=lib/cdata.jdbc.csv.jar \ -DgroupId=cdata \ -DartifactId=jdbc-csv \ -Dversion=24.0.9175.0 \ -Dpackaging=jar

注意: -Dfile のパスと -Dversion は、必要に応じて調整してください。

2. ライセンスファイルの追加

cdata.jdbc.csv.lic ライセンスファイルをプロジェクトの src/main/resources ディレクトリにコピーします:

cp /path/to/cdata.jdbc.csv.lic src/main/resources/

これにより、ライセンスファイルがファット JAR に含まれ、実行時にクラスパスで利用可能になります。

3. pom.xml の更新

CData 依存関係を標準の Maven 依存関係として追加します(system スコープや systemPath は使用しません):

cdata jdbc-csv 23.0.8839.0

dependencies セクションは次のようになります:

org.springframework.boot spring-boot-starter-jdbc org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test cdata jdbc-csv 24.0.9175.0

4. DataSource の設定

src/main/resources/application.properties に以下を追加します:

spring.datasource.url=jdbc:csv:URI='/absolute/path/to/your/csvfiles';RowScanDepth=0; spring.datasource.driver-class-name=cdata.jdbc.csv.CSVDriver spring.datasource.username= spring.datasource.password=

注意:

  • URI には絶対パスを使用してください(例:/Users/yourname/Downloads/csvfiles)。
  • 指定したディレクトリに CSV ファイルが含まれていることを確認してください。
  • RowScanDepth を 0 に設定すると、CSV ドキュメント内のすべての行をスキャンしてデータ型を検出します(パフォーマンスよりも精度を優先)。

5. シンプルなリポジトリの作成

CSV データをクエリするためのリポジトリを作成しましょう。
src/main/java/com/example/csvjdbc/repository/CsvRepository.java

package com.example.csvjdbc.repository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Repository; import java.util.List; import java.util.Map; @Repository public class CsvRepository { @Autowired private JdbcTemplate jdbcTemplate; public List listTables() { return jdbcTemplate.queryForList( "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES", String.class ); } public List> queryTable(String tableName) { // デモ用に 20 行に制限 String sql = String.format("SELECT * FROM [%s] LIMIT 20", tableName); return jdbcTemplate.queryForList(sql); } }

6. REST コントローラーの作成

src/main/java/com/example/csvjdbc/controller/CsvController.java

package com.example.csvjdbc.controller; import com.example.csvjdbc.repository.CsvRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; @RestController @RequestMapping("/api/csv") public class CsvController { @Autowired private CsvRepository csvRepository; @GetMapping("/tables") public List getTables() { return csvRepository.listTables(); } @GetMapping("/table/{tableName}") public List> getTableData(@PathVariable String tableName) { return csvRepository.queryTable(tableName); } }

7. メインアプリケーションクラス

src/main/java/com/example/csvjdbc/CsvJdbcApplication.java

package com.example.csvjdbc; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class CsvJdbcApplication { public static void main(String[] args) { SpringApplication.run(CsvJdbcApplication.class, args); } }

8. アプリケーションのビルドと実行

  1. プロジェクトのビルド: ./mvnw clean package

    これにより、CData ドライバーとライセンスファイルを含むファット JAR が target/ ディレクトリに作成されます。

  2. アプリケーションの実行: java -jar target/jdbc-spring-boot-0.0.1-SNAPSHOT.jar

9. API のテスト

  1. テーブル(CSV ファイル)の一覧表示:
    GET http://localhost:8080/api/csv/tables
  2. テーブルのクエリ(例:Opportunity.csv):
    GET http://localhost:8080/api/csv/table/Opportunity.csv

10. 出力例

GET /api/csv/tables

[ "Opportunity.csv", "Accounts.csv" ]

GET /api/csv/table/Opportunity.csv

[ { "Id": "1", "Name": "Big Deal", "Amount": "10000", "Stage": "Closed Won" }, ... ]

補足とカスタマイズ

  • リポジトリを拡張して、フィルタリング、ページネーション、動的なカラム選択などに対応させることができます。
  • CData JDBC ドライバーは多くの高度な機能をサポートしています。詳しくは公式ドキュメントをご覧ください。
  • ライセンスエラーが発生した場合は、ビルド前に cdata.jdbc.csv.lic が src/main/resources に存在することを確認してください。

データ開発者向け JDBC ドライバー

CData JDBC ドライバーは、従来のデータベースに加え、SaaS、NoSQL、ビッグデータシステムなど270以上のデータソースへの一貫した SQL ベースの接続を提供することで、JDBC の機能を拡張します。ResultSet を使った効率的なクエリ、データの変更、バッチ処理、トランザクション管理、コネクションプーリング、ストアドプロシージャの呼び出しなど、高度な機能を備えています。

CData JDBC ドライバーを使えば、馴染みのある SQL を通じて Java プロジェクトからデータにアクセスできます。30日間の無料トライアルをお試しいただき、データ駆動型アプリケーションの開発を始めましょう!