Teradata JDBC Driverを使って、JavaアプリケーションからTeradataに接続する際の覚え書き。
環境
- OpenJDK (11.0.3)
- Gradle (5.6.2)
- Teradata JDBC Driver (16.20.00.12)
Teradata JDBC Driverの取得
こちらからドライバをダウンロードします。なお、ダウンロードにはTeradata Downloadsのアカウントが必要です。
Driverパッケージのプロジェクトへの追加
取得したterajdbc4.jarを{PROJECT_ROOT}/libs
以下に配置します。
さらにbuild.gradleのdependenciesブロックに以下を追記して、依存パッケージとして追加します。
dependencies {
implementation files('libs/terajdbc4.jar')
}
(※ 16.20.00.11より前のバージョンではtdgssconfig.jarも配置・追記する必要があります)
DataSourceの定義・クエリの発行
DataSourceの実装であるTeraDataSourceを設定し、コネクションを取得、クエリの実行を行います。
(DriverManagerを使ってももちろん書けますが、DataSourceを使うほうが推奨されます。)
雑に書いたコードが以下。
import com.teradata.jdbc.TeraDataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Application {
public static void main(String[] args){
TeraDataSource teraDataSource = new TeraDataSource();
// 環境に合わせて設定する
// パラメータの詳細: https://teradata-docs.s3.amazonaws.com/doc/connectivity/jdbc/reference/current/jdbcugjp/jdbcug_chapter_2.html#BABJIHBJ
teraDataSource.setDSName("your.teradata.host");
teraDataSource.setUser("johndoe");
teraDataSource.setPassword("XXXX");
teraDataSource.setLOGMECH("TD2");
teraDataSource.setTMODE("ANSI");
teraDataSource.setCHARSET("UTF8");
teraDataSource.setENCRYPTDATA("ON");
String query = "SELECT id FROM yourdb.yourtable";
try (Connection conn = teraDataSource.getConnection();
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(query)){
while (rs.next()) {
// ResultSet#getXXXのcolumnは1-based indexなことに注意
System.out.println(rs.getInt(1));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
これでTeradataのtableに対してSELECTを実行できました。
参考
https://docs.gradle.org/current/userguide/dependency_types.html#sub:file_dependencies
https://teradata-docs.s3.amazonaws.com/doc/connectivity/jdbc/reference/current/jdbcugjp/jdbcug_chapter_2.html
https://docs.oracle.com/javase/jp/8/docs/api/javax/sql/DataSource.html