"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني أتمتة عملية تفريغ جداول MySQL في ملفات منفصلة؟

كيف يمكنني أتمتة عملية تفريغ جداول MySQL في ملفات منفصلة؟

تم النشر بتاريخ 2024-12-21
تصفح:967

How Can I Automate Dumping MySQL Tables into Separate Files?

تفريغ جداول 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