JDBC 開発者ガイド:入門
CData JDBC ドライバーは、Java アプリケーションを270以上のクラウドおよびオンプレミスデータソースに接続できる強力なツールです。これらのデータソースをデータベースのように扱うことができるため、データ統合がシンプルになり、SaaS、NoSQL、Big Data などのデータとシームレスにやり取りできます。
このガイドでは、CData JDBC Driver for CSV を使用してシンプルな Java コンソールアプリケーションを構築する手順を説明します。このアプリケーションでは、以下の処理を行います:
- CSV ファイルが格納されているパスをユーザーに入力してもらう(サンプルファイルをダウンロード)
- そのパスにデータベースのように接続する
- 利用可能な「テーブル」(ディレクトリ内の CSV ファイル)を取得する
- ユーザーが選択したテーブルからデータをクエリする
- 結果をコンソールに表示する
以下では、必要なセットアップ、コード、およびアプリケーションの実行方法を説明します。このガイドでは CSV ファイルを例に説明していますが、CData JDBC ドライバーがサポートする270以上のデータソースに対しても同じアプローチが適用できます。
前提条件
1. Java 開発環境のセットアップ
- Java のインストール:Java Development Kit(JDK)1.8以上がインストールされていることを確認してください。Oracle からダウンロードするか、OpenJDK などのオープンソースディストリビューションを使用できます。
- IDE またはビルドツールの選択:IDE(Eclipse、IntelliJ IDEA、NetBeans など)またはビルドツール(Maven、Gradle など)を使用してプロジェクトを管理できます。コマンドラインから javac と java を使用して Java コードをコンパイル・実行することも可能です。
2. CData JDBC Driver for CSV の追加
- ドライバーのダウンロード:CData のウェブサイトから CData JDBC Driver for CSV を入手してください。
- ドライバーのインストール:Windows または Mac の場合は、インストーラーを実行してください。Linux/UNIX の場合は、適切な場所にファイルを展開してください。
- Mac では、システム設定 > プライバシーとセキュリティでインストーラーの実行を許可する必要がある場合があります。
- ドライバーのライセンス認証:ターミナルでインストールディレクトリに移動し、以下のコマンドを実行してください:
java -jar cdata.jdbc.csv.jar --license名前、メールアドレス、ライセンスキー(または TRIAL)を入力してください。
- JAR をクラスパスに追加:
- IDE を使用している場合は、JAR をプロジェクトライブラリに追加してください。
- Maven/Gradle を使用している場合は、JAR を適切にインストールまたは参照してください。
- コマンドラインで実行する場合は、-cp オプションで JAR ファイルをクラスパスに追加してください。
3. サンプル CSV ファイルの準備
- サンプル CSV ファイル:接続・クエリできる CSV ファイルがシステム上のディレクトリに1つ以上あることを確認してください。例えば、C:\TestFolder(Windows の場合)や /home/user/TestFolder(macOS/Linux の場合)のようなフォルダに CSV ファイルを配置してください(サンプルファイルをダウンロード)。
4. 新しい Java プロジェクトの作成
- IDE を使用する場合(IntelliJ、Eclipse など):
- 新しい Java プロジェクトを作成します(例:「CSVJDBCApp」)。
- ダウンロードした CData CSV JDBC ドライバーの JAR をプロジェクトのライブラリ依存関係に追加します。
- ライセンスファイル(LIC)をプロジェクトのライブラリ依存関係に追加します。
- コマンドラインを使用する場合:
- プロジェクト用のフォルダを作成します(例:mkdir CSVJDBCApp)。
- Java ソースファイルを CSVJDBCApp/src(またはコードを保存する場所)に配置します。
- コンパイルと実行時にクラスパスに CData JAR を含めます。
この設定により、コードが CSV ディレクトリに接続しようとする際にドライバーにアクセスできるようになります。
5. CSV ファイルへの接続設定
CData JDBC Driver for CSV で CSV ファイルに接続するには、通常以下のような接続文字列を使用します:
jdbc:csv:URI='C:/path/to/your/csvfiles';RowScanDepth=0;
接続文字列でさまざまなプロパティ(RowScanDepth、セキュリティ設定など)をカスタマイズできます。以下のサンプルでは、ドライバーがカラムのデータ型を推測する方法を最適化するために RowScanDepth=0 を指定しています。
6. コンソールアプリケーションの構築
以下は、基本的な機能を示す完全なコンソールベースの Java アプリケーションです:
- CSV ファイルが格納されているディレクトリをユーザーに入力してもらいます。
- そのディレクトリへの JDBC 接続を確立します。
- ディレクトリ内の CSV ファイル(データベーステーブルとして扱われる)を一覧表示します。
- テーブル名を入力してもらい、クエリを実行して最初の20レコードを表示します(出力は4カラムに制限)。
サンプルコード(ファイル名:CDataCSVApp.java):
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
class CDataCSVApp {
public static void main(String[] args) {
try {
BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
// 1. ユーザーからディレクトリを取得
System.out.println("CSV ファイルへのパスを入力してください:");
String path = buffer.readLine();
// 2. 接続文字列を構築してドライバーをロード
String cnxnString = "jdbc:csv:URI='" + path + "';RowScanDepth=0;";
Class.forName("cdata.jdbc.csv.CSVDriver");
Connection cnxn = DriverManager.getConnection(cnxnString);
// 3. 「テーブル」(CSV ファイル)を一覧表示
DatabaseMetaData metaData = cnxn.getMetaData();
System.out.println("\n利用可能な CSV ファイル(テーブル):");
ResultSet tables = metaData.getTables(null, null, "%", null);
int tableNum = 0;
while (tables.next()) {
System.out.println((tableNum + 1) + ". " + tables.getString("TABLE_NAME"));
tableNum++;
}
// 4. ユーザーにファイルを選択してもらう
System.out.println("\nテーブル名を入力してください('.csv' を含める):");
String tableName = buffer.readLine();
// 5. データをクエリ(最初の20行と最大4カラムのみ表示)
String query = "SELECT * FROM [" + tableName + "] LIMIT 20";
Statement stat = cnxn.createStatement();
boolean ret = stat.execute(query);
// 6. データを表示
if (ret) {
ResultSet tableData = stat.getResultSet();
int columnCount = tableData.getMetaData().getColumnCount();
columnCount = Math.min(columnCount, 4); // 読みやすさのためカラムを4つに制限
// カラムヘッダーを出力(各カラム20文字に切り詰め)
for (int i = 1; i <= columnCount; i++) {
String colName = tableData.getMetaData().getColumnName(i);
if (colName.length() > 20) {
colName = colName.substring(0, 20);
}
System.out.printf("%-20s", colName);
}
System.out.println();
// 区切り線を出力
for (int i = 1; i <= columnCount; i++) {
System.out.print("-------------------");
}
System.out.println();
// 行を出力
while (tableData.next()) {
for (int i = 1; i <= columnCount; i++) {
String value = tableData.getString(i);
if (value != null && value.length() > 20) {
value = value.substring(0, 20);
}
System.out.printf("%-20s", value != null ? value : "NULL");
}
System.out.println();
}
}
} catch (SQLException ex) {
System.out.println("SQL 例外: " + ex.getMessage());
} catch (IOException | ClassNotFoundException ex) {
System.out.println("例外: " + ex.getMessage());
}
}
}
主要なステップの解説
- CData JDBC ドライバーのロード:
Class.forName("cdata.jdbc.csv.CSVDriver");これにより、ドライバーが DriverManager に登録され、DriverManager.getConnection で使用できるようになります。
- 接続の確立:
Connection cnxn = DriverManager.getConnection("jdbc:csv:URI='" + path + "';RowScanDepth=0;");path を CSV ファイルが格納されているフォルダに置き換えてください。必要に応じて、この文字列に追加のプロパティを付加できます。
- テーブル(CSV ファイル)の取得:
DatabaseMetaData metaData = cnxn.getMetaData(); ResultSet tables = metaData.getTables(null, null, "%", null);CSV ファイルの名前を含む ResultSet が返されます。ユーザーが選択できるように、これらを出力します。
- ユーザーにテーブルを選択してもらう:
コンソールからユーザーの入力を読み取り、クエリする CSV ファイルを取得します。
- データのクエリ:
String query = "SELECT * FROM [" + tableName + "] LIMIT 20"; Statement stat = cnxn.createStatement(); stat.execute(query);すべてのカラムを選択するシンプルな SQL ステートメントを実行します(最大20行)。
- 結果の表示:読みやすさのために4カラムに制限し、各セルを20文字に切り詰めています。これはあくまでデモンストレーション用であり、ニーズに合わせて調整できます。
7. アプリケーションの実行
- コンパイル:
javac -cp .;path\to\cdata.jdbc.csv.jar CDataCSV.java - 実行:
java -cp .;path\to\cdata.jdbc.csv.jar CDataCSV(macOS/Linux では、パス区切り文字として ; を : に置き換えてください。)
- テスト:
- CSV ファイルへのパスを入力します(例:C:/TestFolder)。
- 表示される CSV ファイルの一覧を確認します。
- ファイル名を入力します(例:Opportunity.csv)。
- コンソールにクエリ結果が表示されることを確認します。
データ開発者向け JDBC ドライバー
CData JDBC ドライバーは、従来のデータベースに加えて、SaaS、NoSQL、Big Data システムなど270以上のデータソースへの一貫した SQL ベースの接続を提供することで、JDBC の機能を拡張します。ResultSet を使用した効率的なクエリ、データの変更、バッチ処理、トランザクション管理、コネクションプーリング、ストアドプロシージャの呼び出しなど、高度な機能を提供します。
CData JDBC ドライバーを使用すれば、使い慣れた SQL で Java プロジェクトからデータにアクセスするための Java ライブラリが手に入ります。30日間の無償トライアルをお試しいただき、今すぐデータ駆動型アプリの構築を始めましょう!