Bagaimana Menangani Error 'date/time field value out of range: "J538976288 149:42:56"' Ketika Melakukan Proses Migrasi dengan PGDBF ?
Ketika melakukan proses migrasi, saya menemukan kesalahan seperti berikut :
$ pgdbf -d LOG_SATKER.KEU | iconv -c -f UTF-8 -t UTF-8 | psql -U eoffice rkakldipa2012
BEGIN
SET
NOTICE: table "log_satker" does not exist, skipping
DROP TABLE
SET
CREATE TABLE
ERROR: date/time field value out of range: "J538976288 149:42:56"
CONTEXT: COPY log_satker, line 1, column tgdsupdate: "J538976288 149:42:56"
ROLLBACK
Bagaimana solusinya .. ?
Dengan Spoon/Kettle
Jika menggunakan Spoon/Kettle, hasilnya tidak sempurna, karena ada beberapa kolom yang tidak terbaca, contohnya, pada kasus diatas ada 5 tabel yang tidak terbaca, berikut screenshot nya :
Solusi sementara
Buat struktur :
$pgdbf -d LOG_SATKER.KEU | less
Maka akan terlihat DDL nya, copy paste DDL nya, seperti berikut :
CREATE TABLE log_satker (kdsatker VARCHAR(6), nmsatker VARCHAR(200), kddept VARCHAR(3), kdunit VARCHAR(2), kdlokasi VARCHAR(2), kdkabkota VARCHAR(2), nomorsp VARCHAR(4), kdkppn VARCHAR(3), kdjnssat VARCHAR(1), kdupdate VARCHAR(1), tgupdate TIMESTAMP, nodsupdate VARCHAR(100), tgdsupdate TIMESTAMP, jnssekolah VARCHAR(2), userid VARCHAR(9), kdruh VARCHAR(1), kdunit_awa VARCHAR(3), kdpusda VARCHAR(1), kdsatblu VARCHAR(1), kdstatblu VARCHAR(1), ambangbts DECIMAL(4), persenpkai DECIMAL(4), nosp_dipal VARCHAR(4), nosp_bantu VARCHAR(4), kdreceh VARCHAR(1), kdunit2 VARCHAR(2), kdaktif VARCHAR(1), kdaktif2 VARCHAR(1), updater VARCHAR(50), tglupdate TIMESTAMP);
Kemudian, jalalankan DDL tersebut di database rkakaldipa2012
Untuk migrasi datanya, kolom dengan tipe timestamp saya ubah menjadi character varying, lalu jalankan lagi perintah diatas dengan tambahan opsi -C
(suppresses the "CREATE TABLE" statement.)
$pgdbf -C -d LOG_SATKER.KEU | iconv -c -f UTF-8 -t UTF-8 | psql -U eoffice rkakldipa2012
Referensi
DBase ke PostgreSQL, Milis Pentaho-Id, https://groups.google.com/forum/#!topic/pentaho-id/jQE_kUtzyXU
Python dbf, http://pypi.python.org/pypi/dbf