2010-12-15 22 views
5

खाली करें मेरे पास एक डेटाबेस है जिसका मैंने बैक अप लिया है। अब मैं मूल डीबी से सभी सामग्री को हटाने की कोशिश कर रहा हूं और इसे अपने खाली राज्य में बहाल कर रहा हूं। चूंकि यह एक रिलेशनल डीबी है, इसमें महत्वपूर्ण बाधाएं हैं। क्या कोई उपकरण है जिसका मैं उपयोग कर सकता हूं?एक रिलेशनल डेटाबेस स्कीमा

+0

मुझे ऐसा कोई उपकरण नहीं पता जो यह कर सकता है लेकिन यह आवश्यक नहीं हो सकता है। चाल सही क्रम में तालिकाओं से हटाना है। मुझे ओरेकल में ऐसा करना पड़ा। ओरेकल की अपनी सारणीएं हैं जिनमें मैंने बनाए गए तालिकाओं के बीच सभी संबंधों के बारे में जानकारी शामिल की है। इस मेटाटेबल से पूछताछ करके, मैं कभी भी एक महत्वपूर्ण बाधा उल्लंघन के बिना हटाने के लिए संबंधों का उचित क्रम प्राप्त करने में सक्षम था (मैं एक टिप्पणी के रूप में पोस्ट कर रहा हूं क्योंकि मुझे नहीं पता कि यह MySQL में संभव है या नहीं)। अन्य (और तेज चलने वाला) विकल्प बाधाओं को दूर करना, छंटनी करना, बाधाओं को फिर से सक्षम करना है। – FrustratedWithFormsDesigner

उत्तर

7

ऐसा करने का सबसे आसान तरीका शायद विदेशी कुंजी चेक अक्षम करना है, फिर टेबल को छोटा करें। चूंकि विदेशी कुंजी अक्षम हैं, जिस क्रम में आप टेबल को छोटा करते हैं, इससे कोई फर्क नहीं पड़ता।

set foreign_key_checks = 0; 
truncate table parent; 
truncate table child; 
truncate table ... 

आप अपने लिए ट्रंकेट टेबल स्टेटमेंट जेनरेट करने के लिए info_schema का भी उपयोग कर सकते हैं। इस तरह कुछ:

select concat('truncate table ',table_schema,'.',table_name,';') as sql_stmt 
from information_schema.tables 
where table_schema = 'your_schema_name' 
and table_type = 'base table'; 
+0

मदद के लिए धन्यवाद। इस मुद्दे को हल किया। –

2

आप अस्थायी रूप से सभी बाधाओं को छोड़ या अक्षम कर सकते हैं, सभी तालिकाओं को छोटा कर सकते हैं, और फिर बाधाओं को पुनर्स्थापित कर सकते हैं। मैंने SQL सर्वर के लिए यह दृष्टिकोण लिया है और यह ठीक काम करता है।

http://lists.mysql.com/mysql/194954

शायद एक और भी बेहतर दृष्टिकोण लिपियों में स्कीमा (जो आप संस्करण नियंत्रण के अधीन रखा गया है) और फिर खरोंच से डेटाबेस को पुन: बाहर उल्टा करने के लिए किया जाएगा।

+0

धन्यवाद। मैं इन समाधानों का प्रयास करूंगा। –

+0

धन्यवाद, इस मुद्दे को हल किया। –

संबंधित मुद्दे