আমার সমস্ত কলামের জন্য সমস্ত টেবিলগুলিতে এই বিবৃতিগুলি কার্যকর করতে হবে।
alter table table_name charset=utf8;
alter table table_name alter column column_name charset=utf8;
মাইএসকিউএল এর ভিতরে কোনও উপায়ে এটি স্বয়ংক্রিয় করা সম্ভব? আমি 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
ধন্যবাদ রিচার্ড তুমি সেই লোক!