cahyadsn / wilayah

Kode dan Data Wilayah Administrasi & Pulau Indonesia sesuai Kepmendagri No 100.1.1-6117 Tahun 2022 dengan PHP+MySQL+AJaX. Demo link : https://wilayah.cahyadsn.com/v2.6/
MIT License
797 stars 317 forks source link

Perubahan format dump untuk wilayah_2022.sql atau wilayah.sql berbeda dengan wilayah_2020.sql #30

Closed xakiy closed 1 year ago

xakiy commented 1 year ago

Halo bang @cahyadsn, terima kasih untuk kerja kerasnya membuat database wilayah yang keren ini.

Saya ada projek kecil membuat API wilayah di python yang saya beri nama GEOS yang menggunakan SQLite sebagai databasenya dan mengkonvert database MySQL yang abang kerjakan, karena menurut saya untuk data yang hanya read-only SQLite sudah cukup mempuni sebagai backendnya. Setelah agak lama saya tinggalkan, proyek kecil itu coba saya perbarui, tentu dengan mengupdate database sumber yang terbaru buatan abang, nah, masalah baru muncul karena format dump yang baru berbeda dengan format dump yang lama yang menggunakan backtick untuk nama tabel, dan field kolom-nya. Saya menggunakan https://github.com/dumblob/mysql2sqlite sebagai konverternya.

wilayah.sql (terbaru)

DROP TABLE IF EXISTS wilayah; CREATE TABLE IF NOT EXISTS wilayah ( kode varchar(13) NOT NULL, nama varchar(100) DEFAULT NULL ); ... -- Provinsi Aceh INSERT INTO wilayah (kode, nama) VALUES ('11','ACEH'),

_wilayah2020.sql (lama)

DROP TABLE IF EXISTS wilayah_2020; CREATE TABLE wilayah_2020 ( kode varchar(13) NOT NULL, nama varchar(100) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; ... INSERT INTO wilayah_2020 (kode, nama) VALUES ('11', 'ACEH'),

Cross issue #https://github.com/xakiy/geos/issues/1

Ada solusi bang @cahyadsn?

cahyadsn commented 1 year ago

Format yang baru memang ditujukan untuk universal rdbms (tidak hanya utk mysql) sehingga delimiter backtick untuk nama table/field dihilangkan. Untuk keperluan yang dimaksud, bisa secara manual ditambah dulu backtick-nya sebelum di konversi ke sqlite, atau semisal di replace dengan python sbb:

>>>import re >>> x=re.sub("wilayah","`wilayah`","INSERT INTO wilayah (kode, nama)") >>> y=re.sub("kode","`kode`",x) >>> z=re.sub("nama","`nama`",y) >>> print(z) INSERT INTO `wilayah` (`kode`, `nama`)

xakiy commented 1 year ago

Oh begitu, berarti ini emang disengaja utk alasan universal rdbms ya, baiklah bang, akan saya sesuaikan kalau begitu..

Note: karena kebiasaan malah terpaku ke tool lama, jadi solusinya adalah sudah tidak perlu konverter itu lagi 🤣 cat wilayah.sql |sqlite3 geo.db Great thanks!