2009-09-30 9 views
13

कैसे छोड़ें मेरे पास एक विकास डेटाबेस (MYSQL) है जिसे मैं किसी बिंदु पर ताजा डेटा के साथ लोड करना चाहता हूं। मैं सभी तालिकाओं की सामग्री को हटाना चाहता हूं। सभी तालिकाओं की सामग्री को हटाने के लिए जितना संभव हो सके स्वचालित रूप से स्वचालित तरीका है (जिनमें विदेशी कुंजी बाधाएं हैं)। क्या सभी समकक्ष बाधाओं को एक छोटा कर दिया गया है?सभी तालिकाओं को छोटा करें (जिनमें से अधिकांश में बाधाएं हैं)। अस्थायी रूप से उन्हें

धन्यवाद

उत्तर

0

आप वास्तव में सभी तालिकाओं बेहतर तरीका मैं ड्रॉप लगता हूँ और पहले से निकाले डेटाबेस स्कीमा के साथ डेटाबेस बनाने काटना चाहते हैं। या आप केवल उसी डेटाबेस की दो प्रतिलिपि बना सकते हैं - परीक्षण और खाली। अपनी टेबल भरने के बाद, बस परीक्षण डीबी हटाएं और परीक्षण के लिए खाली कॉपी करें।

0

TRUNCATE (तालिका) tbl_name एक ही तालिका को छोटा कर देगा। आप इसे अपने सभी टेबल नामों के साथ एक स्क्रिप्ट और लूप में चिपका सकते हैं।

http://dev.mysql.com/doc/refman/5.0/en/truncate.html

आप भी माइग्रेशन में देखना चाहते हो सकता है, लेकिन मुझे लगता एलेक्सी वहाँ सही दृष्टिकोण है। यह बहुत ही समान है कि RoR प्रत्येक रन पर परीक्षण डेटाबेस का पुनर्निर्माण कैसे करता है।

29

मुझे लगता है कि आप निम्न कर सकते हैं:

  1. विदेशी कुंजी बाधा जांच अक्षम

    mysql> SET FOREIGN_KEY_CHECKS = 0; 
    
  2. अपने टेबल काटें

    mysql> TRUNCATE MY_TABLE; 
    
  3. विदेशी कुंजी बाधा की जांच सक्षम करें

    mysql> SET FOREIGN_KEY_CHECKS = 1; 
    

मैं छोड़ने/उन्हें पुनः बनाने के लिए अस्थायी रूप से विदेशी कुंजी की कमी को अक्षम करने पसंद करते हैं।

+0

ऐसा करने के लिए 'PHPMYADMIN' का उपयोग कर किसी के लिए त्वरित टिप्पणी। यदि आप उपर्युक्त सभी कथन एक SQL लाइन में करते हैं, तो यह काम करता है। यदि आप इसे एक समय में करने की कोशिश करते हैं, तो यह काम नहीं करता है। बेशक, मुझे यकीन है कि यह नियमित 'mysql' कमांड लाइन पर @ पास्कल थिवेंट शो के रूप में काम करता है। – Sablefoste

0

यहाँ मैं क्या कमांड प्रॉम्प्ट से करते है:

mysql -Nse 'show tables' DATABASE_NAME | while read table; do mysql -e "SET FOREIGN_KEY_CHECKS = 0; TRUNCATE table $table" DATABASE_NAME; done 

समस्या अगर आप प्रमाणीकरण की आवश्यकता होती है, तो आप एक -u YOUR_USERNAME -pYOURPASSWORD दोनों mysql के बाद आदेशों जोड़ने की आवश्यकता होगी, है।

यदि आप कमांड प्रॉम्प्ट पर अपना पासवर्ड दर्ज नहीं करना चाहते हैं (मैं कभी नहीं), तो आपको प्रत्येक प्रॉम्प्ट के बाद पासवर्ड कॉपी और पेस्ट करना होगा, जो संख्या के आधार पर कई बार हो सकता है टेबल के

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