2010-07-01 18 views
12

क्या MySQL डेटाबेस में सभी तालिका को छोटा करना संभव है? इसके लिए क्या पूछताछ है।mysql डेटाबेस में सभी तालिका को मिटाएं

+0

के संभावित डुप्लिकेट [एक आदेश में एक MySQL डेटाबेस में सभी तालिकाओं काटें?] (Http://stackoverflow.com/questions/1912813/truncate-all-tables-in-a-mysql-database -इन-वन-कमांड) –

उत्तर

6

आपने इस क्वेरी कर सकते हैं।

अन्य संभावना हो सकता है,

  1. भागो क्वेरी
  2. कॉपी क्लिपबोर्ड (कॉपी) के लिए परिणाम
  3. MySQL कमांड दुभाषिया में परिणाम पेस्ट (पेस्ट)

किया हुआ।

यदि आप केवल क्वेरी चलाते हैं तो आप समझेंगे कि मैं क्या कहने की कोशिश कर रहा हूं।

+0

क्षमा करें, लेकिन मैं आपके कथन को समझ नहीं सकता, परिणाम को एक स्क्रिप्ट में सहेज सकता हूं और इसे चला सकता हूं। – chetan

+0

ठीक है, यह करें। मैं सवाल अपडेट करूंगा। –

3

एक एकल SQL क्वेरी का उपयोग करना संभव नहीं है।

select 'truncate table ' || table_name || ';' 
    from INFORMATION_SCHEMA.TABLES; 

फिर एक स्क्रिप्ट के लिए परिणाम बचाने के लिए और इसे चलाने:

+2

जो शायद एक अच्छी बात है। –

8

@Pablo पाइप से जारी रखते हुए मेरे लिए श्रृंखलाबद्ध नहीं कर रहे थे - और मैं एक एकल डाटाबेस तक प्रतिबंधित करना चाहता था और उसके बाद ही टेबल

SELECT CONCAT('truncate table ',table_name,';') 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = '<<YOUR-DB-NAME>>' 
AND TABLE_TYPE = 'BASE TABLE'; 
+0

मुझे एक ही समस्या थी कि पाइपों को संयोजित नहीं किया गया था (MySQL 5.6.15)। यह मेरे लिए काम किया। – nagu

2

यहाँ मैं आप अपने डेटाबेस पुनर्स्थापित करने के लिए Cero करने के लिए एक संग्रहीत प्रक्रिया छोड़

CREATE DEFINER=`root`@`localhost` PROCEDURE `reset_database`(DB_NAME VARCHAR(100)) 
BEGIN 
DECLARE done INT DEFAULT FALSE; 
DECLARE tableName VARCHAR(100); 
DECLARE cur CURSOR FOR SELECT table_name FROM INFORMATION_SCHEMA.tables WHERE table_schema = DB_NAME AND table_type = 'BASE TABLE'; 
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; 

OPEN cur; 

SET FOREIGN_KEY_CHECKS = 0; 
read_loop: LOOP 
FETCH cur INTO tableName; 
    IF done THEN LEAVE read_loop; END IF; 
    SET @s = CONCAT('truncate table ',tableName); 
    PREPARE stmt1 FROM @s; 
    EXECUTE stmt1; 
    DEALLOCATE PREPARE stmt1; 
END LOOP; 
SET FOREIGN_KEY_CHECKS = 1; 

CLOSE cur; 
END; 
5

आप बस सभी तालिकाओं का चयन कर सकते हैं और फिर सभी को छंटनी का चयन कर सकते हैं।

enter image description here

+0

यह वास्तव में सहायक है। आपका बहुत बहुत धन्यवाद। मैं इस प्रकार के समाधान की तलाश में हूं और यह mysqlworkbench में भी एप्लिकेशन है। –

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