ฉันต้องการรันคำสั่งเหล่านี้ในตารางทั้งหมดสำหรับคอลัมน์ทั้งหมด
alter table table_name charset=utf8;
alter table table_name alter column column_name charset=utf8;
เป็นไปได้ไหมที่จะใช้ระบบอัตโนมัตินี้ในทางใดทางหนึ่งใน MySQL? ฉันต้องการหลีกเลี่ยง mysqldump
ปรับปรุง: Richard Bronosky แสดงให้ฉันเห็นวิธี :-)
แบบสอบถามที่ฉันต้องการดำเนินการในทุกตาราง:
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
ขอบคุณริชาร์ด คุณคือผู้ชาย!