Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

डेटाबेस बैकअप SQL क्वेरी

संपूर्ण डेटाबेस का डेटा प्राप्त करने के लिए - SqlFiddle डेमो

केवल एक टेबल का डेटा प्राप्त करने के लिए - - SqlFiddle डेमो

मैंने एक जटिल लेकिन स्वीकार्य समाधान किया है। लेकिन सुधार की जरूरत है

यह जटिल कोडिंग के साथ एक जटिल प्रक्रिया है, विशेष रूप से क्वेरी जो सभी कॉलम की सभी पंक्तियों को group_concat द्वारा एक ही परिणाम में लाती है। और एक जटिल संयोजन के साथ प्रारूप।

इसे सभी परिदृश्यों में सरल, कुशल और काम करने की आवश्यकता है।

मेरे समाधान के कुछ विवरण :निम्नलिखित महत्वपूर्ण हिस्सा है, अन्य सिर्फ शर्तें / लूपिंग हैं (मैं प्रलेखन के साथ काम नहीं कर रहा हूँ, इसके लिए समय और सुझावों की भी आवश्यकता है, कोई मुझे इसके स्वरूपण और सुधार में मदद कर सकता है, किसी भी असुविधा के लिए क्षमा करें, हालांकि मुझे किसी भी मदद के लिए खुशी होगी आप और मेरी ओर से)

नोट:group_concat(yourColumn विभाजक ' --anySeparator-- ') आपके कॉलम की सभी पंक्तियों को इस तरह मर्ज कर रहा है कि पंक्तियों को --anySeparator--

द्वारा अलग किया जाता है
select group_concat(column_name separator '`,`') into @cns1 from
information_schema.columns where table_schema=dn and [email protected];

1 :column_names को

. द्वारा अलग किए गए एकल मान के रूप में मिला है
`,` => @cs1 = id`,`ename`,`did

select group_concat(column_name separator '`,"\',\'",`') into @cns2
from information_schema.columns where table_schema=dn and [email protected];

2 :column_names को

. द्वारा अलग किए गए एकल मान के रूप में मिला है
`','` => @cn2  = id`','`ename`','`did

set @cns1=concat("`",@cns1,"`");    set @cns2=concat("`",@cns2,"`");

3:लापता अक्षर (`) कॉलम नामों के आरंभ और अंत में डाला जाता है

set @res=concat(@res," insert into ",@tn,"(",@cns1,") values ('");

4:बस res= " insert into emp( `id` , `एनाम` , `किया` ) values(" यहां आप देख सकते हैं कि मैंने विभाजक क्यों लगाए हैं (MySql फ़ॉर्मेटिंग हासिल की गई है)

set @temp := '';
set @q := concat("select group_concat(concat(",@cns2,") separator \"'),('\")
 from ",dn,".",@tn, " into @temp");

ऊपर सबसे महत्वपूर्ण कथन है यह तालिका से सभी डेटा पंक्तियों को एक कॉलम की पंक्तियों के रूप में प्राप्त करता है और आगे इन पंक्तियों को '),(' द्वारा अलग किया जा रहा है।

5.1 concat(",@cns2,") एक ही कॉलम में सभी कॉलम के मान प्राप्त करता है।

5.2 सबसे बाहरी कॉनकैट के बाद अब @q है

 @q = "select group_concat(`id`','`ename`','`,did` separator '),(' from 
mydb.emp into @temp";

5.3 :group_concat उस संयुक्त कॉलम की सभी पंक्तियों को एक मान में मर्ज कर देगा। कॉलम मानों को @cns2 में मौजूद विभाजकों के माध्यम से जोड़ा जाएगा और पंक्तियों के स्तर में शामिल होने के साथ होगा '),('

prepare s1 from @q;
execute s1;deallocate prepare s1;
set @res = concat(@res,@temp,");");    

@q निष्पादित हो गया है

set @res = concat(@res,@temp,");");

6 :और हमें परिणाम

. के रूप में मिलेगा
 res was = insert into emp(`id`,`ename`,`did`) values ('
@temp = 1','e1','4'),('2','e2','4'),
('3','e3','2'),('4','e4','4'),('5','e5','3

और @res = concat(@res,@temp,");"); . के बाद हमें मिलता है

 insert into emp(`id`,`ename`,`did`) values ('1','e1','4'),('2','e2','4'),
('3','e3','2'),('4','e4','4'),('5','e5','3);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PoolableConnectionFactory नहीं बना सकता (उपयोगकर्ता ''@'लोकलहोस्ट' के लिए प्रवेश निषेध

  2. MySQL JSON ऑब्जेक्ट्स का कुल योग

  3. Mysql प्रक्रियाओं के बीच प्राथमिकताएँ निर्धारित करें

  4. Mysql में उपनाम पर फ़िल्टर करना

  5. MySQL वर्कबेंच का उपयोग करके किसी क्वेरी के परिणाम कैसे निर्यात करें