MAPDB Injector Pelaporan Data Perguruan Tinggi UNISA
ssusere5db05
0 views
18 slides
Oct 06, 2025
Slide 1 of 18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
About This Presentation
MAPDB Injector Pelaporan Data Perguruan Tinggi UNISA
Size: 861.94 KB
Language: none
Added: Oct 06, 2025
Slides: 18 pages
Slide Content
oleh:
Basit Adhi Prabowo
mapdb, injektor PDDIKTI
Tentang
Penjelasan tentang penggunaan mapdb
Tautan:
https://pdsi.unisayogya.ac.id/tag/injector/
Sifat:
Open Source
Penulis Utama:
Basit Adhi Prabowo, S.T. [email protected]
Cek Tabel
Apakah tabel sudah dipetakan
Apakah tabel referensi Institusi sudah sama dengan
tabel referensi PDDIKTI (setidaknya nama dan kode-nya)
Tabel Institusi
kodenama field2
1 A X
2 B Y
3 C Z
Tabel PDDIKTI
kode nama
1 A
2 B
3 C
4 D
Sama?
pt_agama ok agama
jurusan ok ak_programstudi
belum dipetakanjabfung
C
E
K
Membandingkan data tabel Institusi dengan data tabel PDDIKTI
select guid, field2, field3, ... from A where <filterInstansi> order by `field1 (pk)`
$this->GetRecordset(“P”)
3
3
1 1
5
T
A
B
E
L
4
1
1 2
4
5
Ekstrak
Memasukkan data dari tabel PDDIKTI ke tabel Institusi
(tanpa update UUID/GUID)
Tabel Institusi
kode GUID1 GUID2
Tabel PDDIKTI
UUID1 UUID2
d555e532-8dfa-490b-a30b-
72ab03274475
944f5369-5183-4841-
8543-c7610f1bebf4
Ekstrakd555e532-8dfa-490b-
a30b-72ab03274475
944f5369-5183-4841-
8543-c7610f1bebf4
1
E
K
S
T
R
A
K
Ambil data tabel PDDIKTI, kemudian dimasukkan ke tabel Institusi (jika belum ada)
GetRecordset(“P”, <filtertahunakademik>)
insert into A (guid, field2, field3, ...) select nilai[id], nilai[fieldb], nilai[fieldc], ... from A where not exists (select 1 from A
where fieldInstitusi[0]=nilai[fieldPDDIKTI[0]] and ...) limit 0,1
1
2
1 2
4 4
3
3 4 5
5 5
3 3
6 7
6 7
Sinkron
Proses menghubungkan 1 baris di tabel Institusi dengan
1 baris di tabel PDDIKTI melalui UUID/GUID primary key
1 baris data PDDIKTI tersebut
Tabel Institusi
nim namamahasiswa GUID
123456Fulan
456789John Doe
Tabel PDDIKTI
UUID nim namamahasiswa
d555e532-8dfa-490b-
a30b-72ab03274475
123456Fulan
944f5369-5183-4841-
8543-c7610f1bebf4
456789John Doe
Sinkron
GUID
d555e532-8dfa-490b-
a30b-72ab03274475
944f5369-5183-4841-
8543-c7610f1bebf4
S
I
N
K
R
O
N
Langkah 1: check, ambil data tabel Institusi yang belum ada UUID/GUIDnya, kemudian dicari di tabel PDDIKTI
select `field1 (pk)`,<fieldInstitusi>, <fieldtambahanInstitusi> from A a where `a.guid`="" or isnull(`a.guid`)) and
<filterInstitusi> order by <fieldorderInstitusi>
GetRecordset(“P”, <fieldPDDIKTI>=nilai[<fieldInstitusi>])
1 2 3 4 5 5
3
5
4
6
8 9 2
8
2
7
1
S
I
N
K
R
O
N
Langkah 2: update guid, UUID/GUID yang didapat dari PDDIKTI disimpan ke Institusi
update Aa set a.guid=nilai[`fielda (pk)`] where `field1 (pk)`=nilai[`field1 (pk)`]
1 3 4
2
4
1
42
3
Injek - Insert
Proses memasukkan data dari tabel Institusi ke dalam tabel
PDDIKTI, kemudian akan mendapatkan UUID/GUID primary key
untuk setiap baris baru dan disimpan ke dalam tabel Institusi
Tabel Institusi
nim namamahasiswa GUID
123456Fulan
Tabel PDDIKTI
UUID nim namamahasiswa
Update
GUIDd555e532-8dfa-490b-
a30b-72ab03274475
d555e532-8dfa-490b-
a30b-72ab03274475
Injek
123456 Fulan
ID Baru
I
N
J
E
K
Langkah 1: injek, ambil data tabel Institusi yang belum ada UUID/GUIDnya, kemudian dimasukkan ke tabel PDDIKTI
select `field1 (pk)`, field2, field3, ..., <fieldtambahanInstitusi> from A a where a.<fieldtahunakademikInstitusi> =
parameter["tahunakademik"] and isnull(guid) and <filterInstitusi>
InsertRecord(“P”, array(“fieldb”=>nilai[field2], “fieldc”=>nilai[field3], ...))
1 2 3 4 5 6
7
2 2
4
8
5
6
7
8
9
9 10 2 10 2
10 10
I
N
S
E
R
T
1
3
Tidak
berlaku
untuk
internalfilter
Langkah 2: update guid, UUID/GUID yang didapat dari PDDIKTI disimpan ke Institusi
update Aa set a.guid=nilai[`fielda (pk)`] where `field1 (pk)`=nilai[`field1 (pk)`]
1 3 4
2
4
1
42
3
I
N
J
E
K
I
N
S
E
R
T
-: SAMA DENGAN LANGKAH 2 PROSES SINKRON :-
Tabel PDDIKTI
UUID nim namamahasiswa
d555e532-8dfa-490b-
a30b-72ab03274475
Injek - Update
Proses memperbarui data dari tabel Institusi ke dalam tabel
PDDIKTI, kemudian memasukkan ulang UUID/GUID primary
key dari tabel PDDIKTI dalam tabel Institusi
Tabel Institusi
nim namamahasiswa GUID
123456Joh Doe
Update
GUID
d555e532-8dfa-490b-
a30b-72ab03274475
123456 John Doe
Injek
123456 Fulan
Berubah
I
N
J
E
K
Langkah 1: injek, ambil data tabel Institusi yang belum ada UUID/GUIDnya, kemudian dimasukkan ke tabel PDDIKTI
select `field1 (pk)`, <fieldwherePDDIKTI>, <fieldupdatePDDIKTI>, <fieldtambahanInstitusi> from A a where
a.<fieldtahunakademikInstitusi> = parameter["tahunakademik"] and isnull(guid) and <filterInstitusi>
UpdateRecord(“P”, array(“key”=>array(“fieldwherePDDIKTI[0]”=>nilai[field2], ...), “data”=>array(“fieldupdatePDDIKTI[0]”=>nilai[field2], ...))
1 2 3 4 5
6 7
5
8
6
7
8
9
10
10 2 11
11 11
U
P
D
A
T
E
9
1
4
2
3
3 11
Tidak
berlaku
untuk
internalfilter
Langkah 2: update guid, UUID/GUID yang didapat dari PDDIKTI disimpan ke Institusi
update Aa set a.guid=nilai[`fielda (pk)`] where `field1 (pk)`=nilai[`field1 (pk)`]
1 3 4
2
4
1
42
3
I
N
J
E
K
U
P
D
A
T
E
-: SAMA DENGAN LANGKAH 2 PROSES SINKRON :-
Internal Filter
Membuat query sendiri dengan klausa where
[internalfilter], tidak menggunakan mekanisme
mapping
select * from A a join B b on
b.kd=a.kd where [internalfilter]
a.field1=0
select * from A a join B b on
b.kd=a.kd where a.field1=0