Мне нужно выполнить эти операторы во всех таблицах для всех столбцов.
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
Спасибо, Ричард. Ты мужчина!
источник
На самом деле, вы можете использовать CONVERT TO для таблицы, чтобы преобразовать все столбцы в этой таблице в набор символов и параметры сортировки.
Кроме того, для меня более разумно выбрать базу данных, на которой вы хотите это сделать. Итак, это:
а не это:
Но я думаю, что если вы действительно хотите сделать это на всех столах, вы можете использовать первый. Кажется, мне немного тяжело. :)
источник
Чтобы изменить параметры сортировки для всех столбцов, которые я использовал
источник
Вы можете использовать
information_schema
базу данных, чтобы найти столбец и таблицу, которую нужно изменить. Вы можете найти их с:Затем вы можете автоматизировать изменение с помощью сценария SQL, хранимой процедуры или с вашим предпочтительным языком разработки.
источник