اذهب إلى المحتوى
  • 0

كيف نحذف البيانات فقط من كل جداول قاعدة البيانات عن طريق أمر واحد مع الحفاظ على وجود هيكلية هذه الجداول

سعيد يوسف

السؤال

Recommended Posts

  • 1

يمكننا المرور على جميع الجداول وعمل truncate لهم، افتح محرر الأوامر cmd أو terminal ثم اكتب أمر musql وبعد ظهور المؤشر

اكتب السطر التالي:

mysql -Nse 'show tables' DATABASE_NAME | while read table;
		
			do mysql -e "truncate table $table" DATABASE_NAME; done

هذا الأمر سوف يجلب أسماء جميع الجداول في قاعدة بيانات ما، ثم ينفذ أمر truncate الذي يحذف بيانات الجدول دون حذف هيكلية الجدول نفسه.

إذا ظهر لك مشاكل (حذف جدول مرتبط بجدول آخر) أو لتجنب حدوث أخطاء بالأساس، نضبط عدم إظهار تحذيرات عند حذف المفاتيح الثانوية Forien kyes

SET FOREIGN_KEY_CHECKS=0;
ثم أمر الحذف
...
ثم نعيد القيد
SET FOREIGN_KEY_CHECKS=1;

ويمكن تجميع الأوامر السابقة في script وحيد:

SET FOREIGN_KEY_CHECKS = 0;

SELECT @trunc_str := CONCAT('TRUNCATE TABLE ', table_schema, '.', table_name, ';')
FROM   information_schema.tables
WHERE  table_type   = 'BASE TABLE'
  AND  table_schema IN ('db_name1','db_name2');

PREPARE statement FROM @trunc_str;

EXECUTE statement;

DEALLOCATE PREPARE statement;

SET FOREIGN_KEY_CHECKS = 1;

وإن أردت استخدام shell script:

# اسم قاعدة البيانات
DATABASE_NAME=$1

# اسم مستخدم قاعدة البيانات
read -p "DB User: " DBUSER

# كلمة السسر للمستخدم
read -s -p "DB Password: " DBPASSWORD

echo ""  # طباعة فراغ

 # حذف بيانات الجداول

mysql -Nse 'show tables' -D $DATABASE_NAME -u$DBUSER -p$DBPASSWORD | while read table;
do echo "SET FOREIGN_KEY_CHECKS = 0;truncate table \`$table\`;
SET FOREIGN_KEY_CHECKS = 1;"; done | mysql $DATABASE_NAME -u$DBUSER -p$DBPASSWORD
exit 0

إن كنت تستعمل  phpMyAdmin يمكن من واجهة التحكم تفريغ قاعدة البيانات:

Database View => Check All (tables) => Empty

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...