تفريغ جداول MySQL تلقائيًا لفصل الملفات
تسمح الأداة المساعدة mysqldump المدمجة بتفريغ جداول انتقائية، ولكنها تتطلب أسماء جداول محددة مسبقًا . للحصول على نهج ديناميكي يتعامل مع إضافات الجدول الجديدة، يعد الحل الآلي ضروريًا.
أحد هذه الحلول هو برنامج نصي shell يقوم بالاستعلام ديناميكيًا عن قاعدة البيانات لجميع أسماء الجداول ويفرغ كل جدول في ملف مضغوط منفصل. وهذا يلغي الحاجة إلى صيانة اسم الجدول يدويًا في البرنامج النصي للتفريغ.
إليك نموذج نصي يحقق هذه الوظيفة:
#!/bin/bash
# Descr: Dump MySQL table data into separate SQL files for a specified database.
# Usage: Run without args for usage info.
# Author: @Trutane
[ $# -lt 3 ] && echo "Usage: $(basename $0) <DB_HOST> <DB_USER> <DB_NAME> [<DIR>]" && exit 1
DB_host=$1
DB_user=$2
DB=$3
DIR=${4:-.}
[ -d $DIR ] || mkdir -p $DIR
echo -n "DB password: "
read -s DB_pass
tbl_count=0
for t in $(mysql -NBA -h $DB_host -u $DB_user -p$DB_pass -D $DB -e 'show tables')
do
echo "DUMPING TABLE: $DB.$t"
mysqldump -h $DB_host -u $DB_user -p$DB_pass $DB $t | gzip > "$DIR/$DB.$t.sql.gz"
tbl_count=$(( tbl_count 1 ))
done
echo "$tbl_count tables dumped from database '$DB' into dir=$DIR"
يطالب هذا البرنامج النصي بكلمة مرور قاعدة البيانات، ويستعلم عن قاعدة البيانات المحددة لأسماء الجداول، ويفرغ بيانات كل جدول كأوامر SQL في ملفات فردية الملفات المضغوطة ضمن الدليل المحدد (أو دليل العمل الحالي بشكل افتراضي).
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3