🔧 Tutorial: Membuat File Bash Otomatis untuk Memisahkan PDF Berdasarkan Data Mahasiswa dari MySQL
Pada tutorial kali ini, kita akan membuat sebuah skrip bash (.sh) yang akan secara otomatis menghasilkan perintah pdfseparate berdasarkan data mahasiswa dari database MySQL. Data ini berisi nama-nama mahasiswa yang akan digunakan untuk menamai file hasil pemisahan PDF, satu halaman per mahasiswa.
📌 Tujuan
-
Mengambil data mahasiswa dari database
MySQL. -
Menggunakan perintah SQL untuk membuat perintah
pdfseparate. -
Menyimpan hasil query ke dalam file bash (
.sh) dan mengeksekusinya.
🧱 Struktur Data
Misalkan Anda memiliki tabel tbl_mahasiswa dengan kolom:
-
nama(nama mahasiswa) -
prodi_id(program studi) -
tahun_masuk(angkatan masuk)
🛠️ Langkah-Langkah
1. Buat Query SQL yang Menghasilkan Perintah pdfseparate
Gunakan perintah SQL berikut untuk menghasilkan perintah pdfseparate per mahasiswa:
SELECT
CONCAT(
'pdfseparate KARTU_PERPUS_2024.pdf -f ',
rn,
' -l ', rn,
' "', REPLACE(nama, ' ', '_'), '.pdf', '"'
) AS nama
FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY prodi_id, nama) AS rn,
nama
FROM tbl_mahasiswa
WHERE tahun_masuk = 2024
) AS ordered;
🎯 Penjelasan:
ROW_NUMBER()memberikan nomor urut untuk halaman PDF.
REPLACE(nama, ' ', '_')mengganti spasi dengan underscore agar nama file valid.Setiap baris menghasilkan perintah
pdfseparateuntuk 1 halaman PDF berdasarkan urutan mahasiswa.
2. Eksekusi Query Menggunakan MySQL CLI dan Simpan ke File Bash
Jalankan query ini dari terminal dan simpan hasilnya ke file .sh:
mysql -u root -p -D nama_database -B -N -e "SELECT
CONCAT(
'pdfseparate KARTU_PERPUS_2024.pdf -f ',
rn,
' -l ', rn,
' \"', REPLACE(nama, ' ', '_'), '.pdf', '\"'
) AS nama
FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY prodi_id, nama) AS rn,
nama
FROM tbl_mahasiswa
WHERE tahun_masuk = 2024
) AS ordered;" > pisah_pdf.sh
Penjelasan opsi:
-
-u root: user MySQL -
-p: minta password -
-D nama_database: nama database Anda -
-B -N: format output bersih (tanpa tabel) -
Output langsung diarahkan ke file
pisah_pdf.sh
3. Tambahkan Shebang dan Izin Eksekusi
Tambahkan baris shebang di atas file agar bisa dijalankan sebagai skrip:
sed -i '1i#!/bin/bash' pisah_pdf.sh
chmod +x pisah_pdf.sh
4. Jalankan Skrip untuk Memisahkan PDF
Pastikan Anda punya file KARTU_PERPUS_2024.pdf, lalu jalankan skripnya:
./pisah_pdf.sh
Setelah selesai, Anda akan mendapatkan file PDF hasil pemisahan dengan nama-nama seperti:
Ahmad_Rizki.pdf
Dina_Permata.pdf
Siti_Aisyah.pdf
✅ Tips Tambahan
-
Jika nama mahasiswa mengandung karakter seperti
'atau", sebaiknya gunakanREGEXP_REPLACE()(MySQL 8+) atau bersihkan denganREPLACE()beberapa kali untuk keamanan nama file. -
Anda juga bisa menambahkan log ke setiap baris perintah dengan
>> log.txtjika ingin tracking hasil.
🚀 Penutup
Dengan pendekatan ini, Anda bisa mengotomatisasi pemrosesan PDF berdasarkan data mahasiswa dengan cepat dan rapi. Cocok untuk keperluan kampus, sekolah, atau lembaga yang membagikan dokumen personalisasi.
No comments:
Post a Comment