Использование таблиц INFORMATION_SCHEMA для генерации sql команд.
Еще один пример использования данных из INFORMATION_SCHEMA – генерация sql команд. Предположим, мы хотим сделать копию таблиц какой-либо базы данных, добавив к именам таблиц окончание “_backup”.
shell>mysql -uroot -p –silent –skip-column-names -e
“SELECT CONCAT(‘CREATE TABLE ‘, TABLE_SCHEMA, ‘.’, TABLE_NAME,
‘_backup LIKE ‘, TABLE_SCHEMA, ‘.’, TABLE_NAME, ‘;’)
FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = ‘dev’;”
В результате получим следующие sql команды на стандартный вывод (stdout):
shell>CREATE TABLE dev.departments_backup LIKE dev.departments;
CREATE TABLE dev.documents_backup LIKE dev.documents;
…
CREATE TABLE dev.users_backup LIKE dev.users;
Опция “–silent” используется для того, чтобы убрать из вывода форматирование (это форматирование делает похожим вывод на таблицу).
Опция –skip-column-names” используется для того, чтобы убрать из вывода заголовки столбцов.
С помощью символа pipe ‘|’ можно перенаправить полученные sql команды для исполнения в mysql.
shell>mysql -uroot -p –silent –skip-column-names -e
“SELECT CONCAT(‘CREATE TABLE ‘, TABLE_SCHEMA, ‘.’, TABLE_NAME,
‘_backup LIKE ‘, TABLE_SCHEMA, ‘.’, TABLE_NAME, ‘;’)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = ‘dev’;” | mysql -uroot -pPASSWORD