संपूर्ण डेटाबेस का डेटा प्राप्त करने के लिए - 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);