Усечь все таблицы в базе данных MySQL в одной команде?

Другое решение flexbox

Вы можете использовать инверсию порядка элементов в HTML. Затем, используя order, как в ответе Michael_B , вы можете использовать flex-direction: row-reverse; или flex-direction: column-reverse; в зависимости от вашего макета.

Рабочий пример:

.flex {
  display: flex;
  flex-direction: row-reverse;
   /* Align content at the "reversed" end i.e. beginning */
  justify-content: flex-end;
}

/* On hover target its "previous" elements */
.flex-item:hover ~ .flex-item {
  background-color: lime;
}

/* styles just for demo */
.flex-item {
  background-color: orange;
  color: white;
  padding: 20px;
  font-size: 3rem;
  border-radius: 50%;
}
5
4
3
2
1

327
задан Jonathan Leffler 15 December 2009 в 21:31
поделиться

6 ответов

Это работало на меня. База данных изменения, имя пользователя и пароль соответственно.

mysql -Nse 'show tables' -D DATABASE -uUSER -pPWD | while read table; do echo "SET FOREIGN_KEY_CHECKS = 0;drop table \`$table\`;SET FOREIGN_KEY_CHECKS = 1;"; done | mysql DATABASE -uUSER -pPWD

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

Можно было бы просто отбросить и воссоздать таблицы?

РЕДАКТИРОВАТЬ:

@Jonathan Leffler: Верно

Другое предложение (или если вам не нужно усечение ВСЕХ таблиц):

Почему бы просто не создать базовую хранимую процедуру для усечения определенных таблиц

CREATE PROCEDURE [dbo].[proc_TruncateTables]
AS
TRUNCATE TABLE Table1
TRUNCATE TABLE Table2
TRUNCATE TABLE Table3
GO
-1
ответ дан 23 November 2019 в 00:49
поделиться

MS SQL Server 2005+ (удалить PRINT для фактического выполнения ...)

EXEC sp_MSforeachtable 'PRINT ''TRUNCATE TABLE ?'''

Если ваша платформа базы данных поддерживает представления INFORMATION_SCHEMA, возьмите результаты следующего запроса и выполните их.

SELECT 'TRUNCATE TABLE ' + TABLE_NAME FROM INFORMATION_SCHEMA.TABLES

Попробуйте это для MySQL:

SELECT Concat('TRUNCATE TABLE ', TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES

Добавление точки с запятой в Concat упрощает использование, например, из рабочей среды mysql.

SELECT Concat('TRUNCATE TABLE ', TABLE_NAME, ';') FROM INFORMATION_SCHEMA.TABLES
24
ответ дан 23 November 2019 в 00:49
поделиться

при использовании sql server 2005 существует скрытая хранимая процедура, которая позволяет вам выполнять команду или набор команд для всех таблиц в базе данных. Вот как вы могли бы вызвать TRUNCATE TABLE с помощью этой хранимой процедуры:

EXEC [sp_MSforeachtable] @command1="TRUNCATE TABLE ?"

Здесь - хорошая статья, которая развивает более подробно.

Однако для MySql вы можете использовать mysqldump и указать - добавление-удаление таблиц и - параметры без данных для удаления и создания всех таблиц без учета данных. вот так:

mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE]

руководство по использованию mysqldump от dev.mysql

3
ответ дан 23 November 2019 в 00:49
поделиться

Вот процедура, которая должна усечь все таблицы в локальной базе данных.

Сообщите мне, если это не сработает, и я удалю этот ответ.

Непроверено

CREATE PROCEDURE truncate_all_tables()
BEGIN

   -- Declare local variables
   DECLARE done BOOLEAN DEFAULT 0;
   DECLARE cmd VARCHAR(2000);

   -- Declare the cursor
   DECLARE cmds CURSOR
   FOR
   SELECT CONCAT('TRUNCATE TABLE ', TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES;

   -- Declare continue handler
   DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;

   -- Open the cursor
   OPEN cmds;

   -- Loop through all rows
   REPEAT

      -- Get order number
      FETCH cmds INTO cmd;

      -- Execute the command
      PREPARE stmt FROM cmd;
      EXECUTE stmt;
      DROP PREPARE stmt;

   -- End of loop
   UNTIL done END REPEAT;

   -- Close the cursor
   CLOSE cmds;

END;
]
1
ответ дан 23 November 2019 в 00:49
поделиться

Я не уверен, но я думаю, что есть одна команда, с помощью которой вы можете скопировать схему базы данных в новую базу данных. Как только вы это сделаете, вы можете удалить старую базу данных, а после этого вы можете снова скопируйте схему базы данных на старое имя.

0
ответ дан 23 November 2019 в 00:49
поделиться
Другие вопросы по тегам:

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