Library SQLite untuk Menyimpan Jutaan record

By | January 30, 2021
1,444 Views

Siapa tidak mengenal sqlite? Database engine yang kecil dan ringan! Bahkan kalau kalian menggunakan Python maka sudah tersedia API tanpa melakukan install package sqlite, seringkali penulis menggunakan sqlite sebagai database logger karena sederhana sekali nggak pakai ribet. Silahkan kalian baca saja Python dan SQLite untuk membuat operasi CRUD https://softscients.com/2020/05/17/menyimpan-jutaan-record-data-berbasis-sql-dengan-python-secara-mudah/ . Nah bagi kalian yang menggunakan Matlab bisa juga koq menggunakan SQLite yang bisa di download di https://sourceforge.net/projects/mksqlite/files/ yang berbentuk *.mex A MATLAB(R) Mex-DLL to SQLite Databases

Setup Library

Setelah kalian download dan extract akan dihasilkan folder mksqlite-2.7-win64\bin yang berisi

Langkah selanjutnya yang harus kalian lakukan agar library tersebut bisa diakses secara global yaitu addpath() secara permanen yang bisa kalian pelajari https://softscients.com/2020/03/29/buku-pemrograman-matlab-mengenal-dan-setup-global-function/Sebaiknya  kalian letakan folder diatas di C:\mksqlite-2.7-win64\bin biar nggak kehapus suatu saat nanti

Untuk mencoba apakah sudah global function, maka ketikan saja perintah

help mksqlite

Bila tidak terjadi error, maka setpath global yang kalian lakukan berhasil! akan tampil dokumentasi berbahasa jerman karena yang bikin orang jerman! heee heee. Tapi tenang saja, saya buatkan untuk kalian untuk mencoba function SQLite tersebut yang sangat cihuy! sederhana sekali.

Untuk dokumentasi bahasa english ketikan saja perintah

help mksqlite_eng

kalau masih tetap bingung ya wajar saja, tinggal baca postingan ini saja

Membuat database

Kita akan membuat operasi CRUD seperti di python agar dengan membuat database kontak.db yang sangat simple sekali perintahnya yaitu cukup 1 baris saja.

clc;clear all;close all;
kontak = 'kontak.db'; %nama database
dbid = mksqlite(0, 'open',kontak); %open atau close
mksqlite(dbid, 'close'); %jangan lupa untuk close

Variable dbid merupakan handler jadi harus kita pakai terus untuk mengaitkan

See also  Pemahaman Konversi Warna dari RGB ke Lab

Membuat table pada database Sqlite

Untuk membuat table pada database sqlite seperti layaknya menggunakan perintah SQL pada umumnya, adapun desain dari table yang akan kita buat yaitu

Nama table tersebut yaitu biodata,  hal yang harus diperhatikan dalam membua table

  1. Nama table dan nama kolom table menggunakan huruf kecil
  2. Setiap nama kolom harus diberikan atribut tipe variabel seperti integer, string, primary key

untuk perintah SQL secara umum yaitu

-- table: biodata
CREATE TABLE IF NOT EXISTS biodata (
   id integer PRIMARY KEY,
   nama text NOT NULL,
   umur integer,
   pekerjaan text
);

Perintahnya juga sangat simple sekali

clc;clear all;close all;
kontak = 'kontak.db'; %nama database
dbid = mksqlite(0, 'open',kontak); %open atau close
 
%buat SQL untuk membuat table
sql_create_table = 'CREATE TABLE IF NOT EXISTS biodata (id integer PRIMARY KEY,nama text NOT NULL,umur integer, pekerjaan text );';
mksqlite(dbid,sql_create_table);
mksqlite(dbid, 'close'); %jangan lupa untuk close

Insert record

Tentu setiap table kita harus isi jangan dibiarkan kosong, kita akan mencoba untuk mengisi beberapa record seperti berikut

Kita tidak perlu mengisi id karena akan terisi sendiri (primary key),oiya dengan menggunakan place holder berupa tanda ? maka perintah SQL menjadi lebih mudah

clc;clear all;close all;
kontak = 'kontak.db'; %nama database
dbid = mksqlite(0, 'open',kontak); %open atau close

%insert record
bejo = {'Bejo Pamungkas',26,'Marketing'};
mksqlite(dbid,'INSERT INTO biodata(nama,umur,pekerjaan) VALUES(?,?,?)',bejo);
 
bintang = {'Bintang Pambudi',30,'Desainer'};
mksqlite(dbid,'INSERT INTO biodata(nama,umur,pekerjaan) VALUES(?,?,?)',bintang);
 
fira = {'Fira Lesmana',35,'Fotografer'};
mksqlite(dbid,'INSERT INTO biodata(nama,umur,pekerjaan) VALUES(?,?,?)',fira);
 
fajar = {'Fajar Kurniawan',24,'Help Desk'};
mksqlite(dbid,'INSERT INTO biodata(nama,umur,pekerjaan) VALUES(?,?,?)',fajar);

mksqlite(dbid, 'close'); %jangan lupa untuk close

Select Record

Akan mengembalikan sebuah struct https://softscients.com/2020/03/29/buku-pemrograman-matlab-struct-cell-container-data/  Misalkan untuk menampilkan semua biodata gunakan perintah berikut

clc;clear all;close all;
kontak = 'kontak.db'; %nama database
dbid = mksqlite(0, 'open',kontak); %open atau close

disp('menampilkan semua biodata')
sql_select_all ='SELECT * FROM biodata';
biodata = mksqlite(dbid,sql_select_all);
for i=1:length(biodata)
    disp([num2str(biodata(i).id),' ',biodata(i).nama,' ' biodata(i).pekerjaan,' ',num2str(biodata(i).umur)]);
end

mksqlite(dbid, 'close'); %jangan lupa untuk close

Adapun misalkan kita ingin menampilkan umur >=26

clc;clear all;close all;
kontak = 'kontak.db'; %nama database
dbid = mksqlite(0, 'open',kontak); %open atau close

disp('Menampilkan biodata yang berumur > 26')
sql_select_by_umur ='SELECT * FROM biodata WHERE umur >= ?';
biodata = mksqlite(dbid,sql_select_by_umur,26);
for i=1:length(biodata)
    disp([num2str(biodata(i).id),' ',biodata(i).nama,' ' biodata(i).pekerjaan,' ',num2str(biodata(i).umur)]);
end

mksqlite(dbid, 'close'); %jangan lupa untuk close

Update record

Adakalanya kita akan melakukan sebuah update record, maka yang dibutuhkan hanyalah sebuah id (primary key) seperti contoh berikut

See also  Perbedaan Hasil Logaritma Natural antar Matlab dan Excel

Akan diganti umur dan pekerjaan sedangkan namanya tetap

clc;clear all;close all;
kontak = 'kontak.db'; %nama database
dbid = mksqlite(0, 'open',kontak); %open atau close

disp('Lakukan update atas nama bintang')
sql_update_umur_pekerjaan ='UPDATE biodata SET umur = ?,pekerjaan = ? WHERE id = ?';
bintang = {20,'Writer',2};
mksqlite(dbid,sql_update_umur_pekerjaan,bintang); %lakukan update
%menampilkan hasil setelah dilalkukan update
biodata = mksqlite(dbid,sql_select_all);
for i=1:length(biodata)
    disp([num2str(biodata(i).id),' ',biodata(i).nama,' ' biodata(i).pekerjaan,' ',num2str(biodata(i).umur)]);
end
 
mksqlite(dbid, 'close'); %jangan lupa untuk close


Delete record

Operasi selanjutnya yaitu untuk delete sebuah record, maka yang dibutuhkan berupa id (primary key) nya, misalkan kita ingin menghapus id = 1 atas nama bejo pamungkas

clc;clear all;close all;
kontak = 'kontak.db'; %nama database
dbid = mksqlite(0, 'open',kontak); %open atau close

sql_delete_by_id = 'DELETE FROM biodata WHERE id=?';
mksqlite(dbid,sql_delete_by_id,1); %lakukan delete untuk id==1

mksqlite(dbid, 'close'); %jangan lupa untuk close

atauapun menghapus semua record.

clc;clear all;close all;
kontak = 'kontak.db'; %nama database
dbid = mksqlite(0, 'open',kontak); %open atau close

sql_delete_all = 'DELETE FROM biodata';
mksqlite(dbid,sql_delete_all); %lakukan delete ALL

mksqlite(dbid, 'close'); %jangan lupa untuk close