🔧 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
pdfseparate
untuk 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.txt
jika 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