Latar Balakang
Pada salah satu aplikasi yang kita kembangkan, Bank Soal [1], kita memerlukan proses export/import data custom, karena proses export/import data menggunakan database yang kita gunakan, PostgreSQL, sudah tidak memenuhi kebutuhan lagi. Oleh karena itu diperlukan utilitas export/import data yang custom menggunakan format data xml.Solusi
ExportUntuk export, kita menggunakan solusi built-in postgresql query_to_xml(query text, nulls boolean, tableforest boolean, targetns text) [2].
Salah satu contoh SQL untuk exportnya seperti ini :
SELECT * FROM query_to_xml('SELECT * FROM jenis_soal WHERE id_jenis_soalContoh Outputnya seperti berikut :
IN(SELECT DISTINCT(id_jenis_soal)
FROM soal WHERE id_set_soal = '||$1||')',true,false,'') jenis_soal_xml;
<table xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<row>
<id_jenis_soal>1</id_jenis_soal>
<nama>Pilihan Berganda</nama>
<urut>1</urut>
</row>
<row>
<id_jenis_soal>2</id_jenis_soal>
<nama>Kombinasi Berganda</nama>
<urut>3</urut>
</row>
</table>
Import
Untuk proses import kita menggunakan php dengan bantuan pustaka sabre/xml [5].
Contoh Implementasi Import :
$service = new Sabre\Xml\Service();
$service->elementMap = [
'{}row' => function(Sabre\Xml\Reader $reader) {
return Sabre\Xml\Deserializer\keyValue($reader, '');
},
'table' => function(Sabre\Xml\Reader $reader) {
return Sabre\Xml\Deserializer\repeatingElements($reader, 'row');
},
];
$data_xml = $service->parse(file_get_contents($file_xml));
Outputnya akan berupa array, seperti berikut :
Array
(
[0] => Array
(
[id_jenis_soal] => 1
[nama] => Pilihan Berganda
[urut] => 1
)
[1] => Array
(
[id_jenis_soal] => 2
[nama] => Kombinasi Berganda
[urut] => 3
)
)
Referensi
- Sistem Informasi Bank Soal,Transformative Assesment : When Assesment is Not Only About Judging The Students But Developing Their Performance, http://banksoal.openthinklabs.com
- PostrgreSQL : Export - Import Data, http://postgresql.openthinklabs.com/2016/08/postrgresql-export-import-data.html
- Export/Import Data dari MySQL Menggunakan PHP dengan Format XML, http://software.openthinklabs.com/2015/10/exportimport-data-dari-mysql.html
- An XML library for PHP you may not hate., http://evertpot.com/an-xml-library-you-may-not-hate/
- sabre/xml, http://sabre.io/xml/
No comments:
Post a Comment