Kettle's Step as JDBC Source

Pendahuluan

Setelah Anda mahir di Kettle, mungkin pertanyaan selanjutnya adalah apakah output dari step transformation bisa diakses dengan mekanisme API dari programming Java seperti layaknya database  ? Dengan mekanisme JDBC (Java Data Base Connectivity) ?

Jawabannya tentu BISA, karena untuk itulah artikel ini ditulis. READ ONLY tentunya... :)

Silahkan ikuti contoh berikut.

Contoh Transformation : Integrasi Excel & DBF

Berikut adalah gambaran contoh transformation yang akan digunakan. Transformation ini menggabungkan 3 source yakni dokumen Excel dan DBF. Contoh file transformation, dokumen DBF dan Excel dapat didownload pada bagian lampiran di akhir artikel ini.



Untuk Anda yang baru di Kettle dan belum mengetahui bagaimana menambahkan step untuk membaca DBF maupun Excel dapat melihat artikel berikut :

Library-library Yang Dibutuhkan

Library / file jar yang dibutuhkan :
  • JDBCKettle
  • Core Library dari distribusi Kettle (folder [KETTLE]/lib)
  • External Library dari distribusi Kettle (file-file pada folder [KETTLE]/libext dan folder [KETTLE]/libext/commons) dan driver JDBC terkait (misalkan kalo menggunakan MySQL maka JDBC dari MySQL harus disertakan dalam classpath.


Kode Java, Akses dengan JDBC

Berikut adalah kode Java untuk mengakses step "Row Normaliser" dari contoh transformation. Kode tersebut dapat Anda download pada bagian lampiran artikel ini.
  • Buat connection yang diarahkan ke URL / folder dari transformation tersebut berada. Pada contoh terlihat folder yang digunakan adalah "C:\pentaho-id". Format penulisan mengikuti aturan library Apache VFS (Virtual File System).
  • Eksekusi SQL query yang menghasilkan resultset. Nama tabel diganti dengan nama file transformation + nama step yang digunakan. Pada contoh "nama tabel" tersebut adalah "excel_dbf"."Row Normaliser" dimana excel_dbf merujuk ke file excel_dbf.ktr dan Row Normaliser merujuk ke step yang ada pada file transformation tersebut.
  • Selesai

ExcelDBF.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ExcelDBF {
public static void main(String[] args)
{
try {
Class.forName("com.googlecode.jdbckettle.JDBCKettleDriver");
Connection con = DriverManager.getConnection("jdbc:kettle:file://c:/pentaho-id");

Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("Select * from \"excel_dbf\".\"Row Normaliser\"");

// Fetch each row from the result set
while (rs.next()) {
System.out.println(rs.getString("KODE_ITEM") 
+ "," + rs.getString("KODE_PRODU")
+ "," + rs.getString("Bulan")
+ "," + rs.getString("Tahun")
+ "," + rs.getString("Target")
);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}



Hasil eksekusi seperti terlihat di console Eclipse :


ċ
ExcelDBF.java
(1k)
Feris Thia,
Oct 6, 2009, 6:58 AM
ċ
MS_PRODU.DBF
(6k)
Feris Thia,
Oct 6, 2009, 6:24 AM
Ĉ
Feris Thia,
Oct 6, 2009, 6:24 AM
ċ
excel_dbf.ktr
(21k)
Feris Thia,
Oct 6, 2009, 6:25 AM
Comments