Mysqldump with condition and subquery


Hari ini saya tidak sengaja mendapat problem untuk melakukan dump mysql dengan condition tertentu. sempat browsing kesana kemari dan akhirnya mendapatkan jawaban yang sebelumnya saya belum pernah menemukan

Berikut contoh kode untuk melakukan dump satu table dengan condition range tanggal data masuk ke server :

mysqldump --host=HOST --user=USER --password=PASS DATABASE table_1 --no-create-info --skip-triggers --where="field_tanggal_masuk between 'FILTER_DATE_FROM' and 'FILTER_DATE_TO'" >> path_to_save/file.sql

Berikut contoh kode untuk melakukan dump menggunakan subquery (kalau dalam query mysql menggunakan join), condition menyesuaikan kode pertama :

mysqldump --host=HOST --user=USER --password=PASS DATABASE table_2 --no-create-info --skip-triggers --lock-all-tables --where="field_id_table in (select field_table_id from table_1 where field_tanggal_masuk between 'FILTER_DATE_FROM' and 'FILTER_DATE_TO')" >> path_to_save/file.sql

Untuk penjelasan terkain option dari mysqldump bisa dilihat pada Linux mysqldump command, disitu dijelaskan secara detail fungsi atau parameter yang bisa digunakan pada mysqldump

Berikut contoh pengunnaan mysqldump dalam bash script untuk dijalan dalam platform linux

#!/bin/bash
PASSWORD=XXXXXX
HOST=XXXXXX
USER=XXXXXX
DATABASE=databasename
DB_FILE_STRUCTURE=dump.sql
DB_FILE_DATA_REF=dump.sql
EXCLUDED_TABLES=(
table_11
table_21
table_N
)
FILTER_DATE_FROM=date_from
FILTER_DATE_TO=date_to

IGNORED_TABLES_STRING=''
for TABLE in "${EXCLUDED_TABLES[@]}"
do :
   IGNORED_TABLES_STRING+=" --ignore-table=${DATABASE}.${TABLE}"
done

echo "Dump structure"
mysqldump --host=${HOST} --user=${USER} --password=${PASSWORD} --routines --single-transaction --no-data ${DATABASE} > ${DB_FILE_STRUCTURE}

echo "Dump content referensi"
mysqldump --host=${HOST} --user=${USER} --password=${PASSWORD} ${DATABASE} --no-create-info --skip-triggers ${IGNORED_TABLES_STRING} >> ${DB_FILE_DATA_REF}

echo "Dump table 1"
mysqldump --host=${HOST} --user=${USER} --password=${PASSWORD} ${DATABASE} table_1 --no-create-info --skip-triggers --where="field_tanggal_masuk between '${FILTER_DATE_FROM}' and '${FILTER_DATE_TO}'" >> table_1.sql

echo "Dump table 2"
mysqldump --host=${HOST} --user=${USER} --password=${PASSWORD} ${DATABASE} table_2 --no-create-info --skip-triggers --lock-all-tables --where="field_id_2 in (select field_id_1 from table_1 where field_tanggal_masuk between '${FILTER_DATE_FROM}' and '${FILTER_DATE_TO}')" >> table_2.sql

Script diatas berfungsi untuk melakukan dump structure database, data dari database tersebut dan dump salah satu table pada database tersebut dengan condition tertentu

Semoga bermanfaat

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s