MySQL में, कॉलम नामों से "_euro" स्ट्रिंग को हटाने के लिए सभी तालिकाओं के सभी कॉलम नाम कैसे बदलें?

मुझे उनके नाम में "_euro" वाले कुछ कॉलम वाले टेबल खोजने का एक तरीका मिल सकता है:

SELECT DISTINCT TABLE_NAME 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE "%_euro"
    AND TABLE_SCHEMA='my_database'

उदाहरण के लिए, price_total_euro नाम के कॉलम के लिए मैं इसका नाम बदलकर price_total करना चाहता हूं

1
London Smith 6 सितंबर 2020, 19:10

3 जवाब

सबसे बढ़िया उत्तर

निम्न SQL के साथ एक स्क्रिप्ट बनाएँ:

SELECT CONCAT("ALTER TABLE ",TABLE_SCHEMA,".",TABLE_NAME," RENAME COLUMN ",COLUMN_NAME," TO ",REPLACE(COLUMN_NAME,"_euro",""),"; ")
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE "%_euro"

आउटपुट होगा, कई लाइनें जो इस तरह दिखती हैं:

ALTER TABLE test.t1_euro RENAME COLUMN t1_euro TO t1;

स्क्रिप्ट की समीक्षा करें, और इसे अपने डेटाबेस पर निष्पादित करें (बैकअप बनाने के बाद ....)

2
Luuk 6 सितंबर 2020, 19:32

यदि आप MySQL कनेक्टर के साथ अजगर का उपयोग कर रहे हैं तो आप कॉलम हेडर को एक सूची में रख सकते हैं और फिर इसे लूप के माध्यम से चला सकते हैं?

for name in table_names:
    if name.endswith("_euro"):
        new_name = name.replace("_euro", "")
0
IdrisSan 6 सितंबर 2020, 19:47

अपने चयन को एक संग्रहीत प्रक्रिया में रखें और सभी पर एक कर्सर और लूप बनाएं और परिवर्तन ऑपरेशन करें

आप यहां एक प्रक्रिया के लिए उदाहरण पा सकते हैं: https://stackoverflow.com/questions /15786240/mysql-create-stored-process-syntax-with-delimiter#:~:text=Getting%20started%20with%20stored%20procedure%20syntax%20in%20MySQL%3A, Why%20didn%27t%20this%20work% 3F%20...%20More%20items...%20

0
mshahien 6 सितंबर 2020, 19:32