Menjadi pengolah data maupun administrator database terkadang membutuhkan data secara offline untuk komparasi data dengan data lainnya sebagai indikator atau referensi dalam menyuguhkan data atau normalisasi data dari sumber yang berbeda. Hal ini kadang dilakukan sebagai task force untuk kasus tertentu. Data secara offline bisa diolah melalui excel maupun database lokal jika record data begitu banyak.
kemudian bagaimana caranya eksport data ke format csv melalui console atau command sql via remote server dengan ssh. Caranya cukup simple dan pastikan anda login sebagai user yang mempunyai hak akses menulis pada direktori aktif saat akan login ke database secara remote maupun lokal. Cara ini mungkin terbilang primitif tetapi cukup efektif dan tidak memakan resource maupun koneksi yang mampu menyediakan paket data yang besar. Sebagai contoh saya konek melalui openvpn yang mungkin terbatas kemampuanya sehingga ketika mencoba eksport data yang jumlahnya 30 ribuan dari ratusan ribu atau jutaan record maka koneksi terputus.
Solusinya, remote ke server lalu login ke database server kemudian eksport data ke csv untuk diolah lebih lanjut. Berikut contoh simplenya:
[root@localhost opt]# psql -h ipserverdb -U userdb -d nama_db
Password for user *******:
psql (9.2.24, server 11.5)
WARNING: psql version 9.2, server version 11.0.
Some psql features might not work.
Type "help" for help.
siloket_rilis=> select npm, nama, flag_ukt, total_tagihan, flag_bayar from NAMA_TABEL where tahun_akademik = '2019/2020' and ganjil_genap = '2' offset 0 limit 10;
npm | nama | flag_ukt | total_tagihan | flag_bayar
-----------------+---------------+-----------------+---------------+------------
18******** | A******** | 0 | 7000000 | 1
19******** | A******** | 0 | 6600000 | 1
19******** | N******** | 0 | 6600000 | 1
19******** | O******** | 0 | 6600000 | 1
19******** | S******** | 0 | 6600000 | 1
19******** | A******** | 0 | 6600000 | 1
19******** | L******** | 0 | 6600000 | 1
19******** | M******** | 0 | 6600000 | 1
19******** | R******** | 0 | 6600000 | 1
19******** | E******** | 0 | 6600000 | 1
(10 rows)
siloket_rilis=> \copy (SELECT npm, nama, flag_ukt, total_tagihan, flag_bayar FROM NAMA_TABEL where tahun_akademik = '2019/2020' and ganjil_genap = '2') to 'MasterTagihan20192.csv' DELIMITER ';' CSV HEADER;
siloket_rilis=> \q
[root@localhost opt]# ls -lh
total 36M
drwxr-xr-x. 3 root root 28K Dec 28 12:05 BackupDB
-rw-r--r-- 1 root root 2.4M Dec 28 14:58 MasterTagihan20191.csv
-rw-r--r-- 1 root root 2.1M Dec 28 14:58 MasterTagihan20192.csv
Nah mudahkan, silahkan mencoba dan semoga bermanfaat.