मुझे डेटा को एक टेबल से दूसरे में कॉपी करने की आवश्यकता है। टेबल में सभी समान कॉलम या ऑर्डर नहीं होते हैं; लेकिन प्रतिलिपि बनाने वाला डेटा हमेशा एक ही कॉलम में होता है; यह कॉलम foo
से डेटा को कॉलम foo
पर कॉपी किया जाना चाहिए।सामान्य कॉलम के साथ तालिका डेटा कॉपी करें
यदि यह था केवल दो तालिकाओं मैं बस की तरह स्तंभ नाम हार्डकोड सकता है:
INSERT INTO table_target (column1, column2, column4)
SELECT column1, column2, column4 FROM table_source;
लेकिन वहाँ एक दर्जन तालिकाओं हैं, और कुछ अतिरिक्त परिवर्तन किया जाना चाहिए, तो यह अच्छा होगा अगर मैं बस कह सकता हूं: किसी मिलान करने वाले कॉलम कॉपी करें और बाकी को अनदेखा करें।
मैंने यह पता लगाने में कामयाब रहा है कि आम कॉलम की सूची कैसे प्राप्त करें, लेकिन अब मैं अटक गया हूं।
SELECT src.col
FROM (SELECT COLUMN_NAME as col
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'table_target') as trg
INNER JOIN
(SELECT COLUMN_NAME as col
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'table_source') as src ON (src.col=trg.col)
;
क्या आप गतिशील एसक्यूएल का उपयोग कर सकते हैं? क्या आप किसी अन्य प्रोग्रामिंग भाषा के अंदर एसक्यूएल का उपयोग कर रहे हैं? – golimar
यह एक बार कार्य की तरह लगता है। क्या यह सच है? या यह ऐसा कुछ है जिसे उत्पादन में बार-बार चलाना पड़ता है? यदि यह एक बार की बात है, तो आप अधिक SQL उत्पन्न करने के लिए उपरोक्त कोड (कुछ परिवर्तनों के साथ) का उपयोग कर सकते हैं, और उसके बाद उत्पन्न SQL चला सकते हैं। – MJB
हां यह एक बार पूछताछ है, और जिस समाधान का मैं उपयोग कर रहा हूं वह अनिवार्य रूप से यह दो चरण प्रक्रिया थी। फिर भी, यह जानना अच्छा होगा कि इसे "ठीक से" कैसे किया जाए। – Odalrick