Усеките все таблицы в базе данных MySQL, которые соответствуют шаблону имени

Если у вас есть более простое требование объединить детей в одном поле, group_concat - ваш друг.

Огромное спасибо Саймону Слэйверу из этой темы: http://sqlite.1065341.n5.nabble.com/Howto-pivot-in-SQLite-tp26766p26771.html

34
задан David Moles 19 August 2016 в 19:40
поделиться

3 ответа

Используйте concat:

SELECT concat('TRUNCATE TABLE `', TABLE_NAME, '`;')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE 'inventory%'

Это, конечно же, сгенерирует только SQL, который вам нужно скопировать и запустить самостоятельно.

61
ответ дан 27 November 2019 в 16:23
поделиться
SELECT CONCAT('TRUNCATE TABLE ',TABLE_NAME)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE 'inventory%'

Затем вы должны взять каждую строку набора результатов и вызвать ее как оператор SQL. Вы можете сделать это, скопировав и вставив разделенные результаты в командное окно.

Но гораздо лучшим решением будет написать некоторую программу, которая будет выполнять указанный выше запрос, перебирать результаты и выполнять каждый запрос.

Используйте PHP для этого или любого другого языка сценариев. Многие примеры даже здесь, на SO.

0
ответ дан 27 November 2019 в 16:23
поделиться

Если вы используете командную строку, вы можете попробовать что-то вроде этого.

mysql -u [user] -p[password] -e 'use [database]; show tables' | perl -lane 'print "truncate table $F[0]" if /^inventory/i' > [database].sql
4
ответ дан 27 November 2019 в 16:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: