मुझे इन कथनों को सभी स्तंभों के लिए सभी तालिकाओं में निष्पादित करने की आवश्यकता है।
alter table table_name charset=utf8;
alter table table_name alter column column_name charset=utf8;
क्या MySQL के अंदर किसी भी तरह से इसे स्वचालित करना संभव है? मैं mysqldump से बचना पसंद करूंगा
अद्यतन: रिचर्ड ब्रोंस्की ने मुझे रास्ता दिखाया :-)
प्रत्येक तालिका में निष्पादित करने के लिए आवश्यक क्वेरी:
alter table DBname.DBfield CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
अन्य सभी प्रश्नों को उत्पन्न करने के लिए पागल क्वेरी:
SELECT distinct CONCAT( 'alter table ', TABLE_SCHEMA, '.', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;' ) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'DBname';
मैं केवल इसे एक डेटाबेस में निष्पादित करना चाहता था। सभी को एक पास में निष्पादित करने में बहुत लंबा समय लग रहा था। यह पता चला कि यह प्रति तालिका प्रति फ़ील्ड एक क्वेरी उत्पन्न कर रहा था। और प्रति तालिका केवल एक प्रश्न आवश्यक था (बचाव के लिए अलग)। एक फ़ाइल पर आउटपुट प्राप्त करना यह था कि मैंने इसे कैसे महसूस किया।
फ़ाइल में आउटपुट कैसे उत्पन्न करें:
mysql -B -N --user=user --password=secret -e "SELECT distinct CONCAT( 'alter table ', TABLE_SCHEMA, '.', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;' ) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'DBname';" > alter.sql
और अंत में सभी प्रश्नों को निष्पादित करने के लिए:
mysql --user=user --password=secret < alter.sql
धन्यवाद रिचर्ड। आप ही है वह आदमी!