bash pdfseparate mysql query | java php laravel linux mysql sql bootstrap html css query java php laravel linux mysql sql bootstrap html css query: bash pdfseparate mysql query

Wednesday, June 4, 2025

bash pdfseparate mysql query

🔧 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 gunakan REGEXP_REPLACE() (MySQL 8+) atau bersihkan dengan REPLACE() 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

saifiahmada.com adalah blog belajar programming Indonesia, membahas lengkap materi bahasa pemrograman: code HTML, CSS, Bootstrap, Desain, PHP, MySQL, coding Java, Query, SQL, dan dunia linux