Mysql
 sql >> база данни >  >> RDS >> Mysql

Как мога да съкратя всички таблици от MySQL база данни?

Добре, реших го сам, ето съхранената процедура :)

BEGIN
    DECLARE done BOOLEAN DEFAULT FALSE; 
    DECLARE truncatestmnt TEXT; -- this is where the truncate statement will be retrieved from cursor

    -- This is the magic query that will bring all the table names from the database
    DECLARE c1 CURSOR FOR SELECT Concat('TRUNCATE TABLE ', TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES WHERE INFORMATION_SCHEMA.TABLES.TABLE_SCHEMA = "@DatabaseName";
    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = TRUE; 

    OPEN c1;

    c1_loop: LOOP
    FETCH c1 INTO truncatestmnt;
    IF `done` THEN LEAVE c1_loop; END IF;
        SET @x = truncatestmnt;
        PREPARE stm1 FROM @x;
        EXECUTE stm1;
    END LOOP c1_loop; 

    CLOSE c1;
END

Това, което правя, е да извиква всички таблици от дадената база данни, това ще помогне, ако таблиците в дадената база данни нямат модел, който да следват.

Така че чрез извикване на DECLARE c1 CURSOR FOR SELECT Concat('TRUNCATE TABLE ', TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES WHERE INFORMATION_SCHEMA.TABLES.TABLE_SCHEMA = "@DatabaseName"; и запазвайки резултатите в курсор, мога да извлека всички TRUNCATE TABLE x изрази, генерирани от "n" количеството таблици в дадената база данни, след което само чрез подготовка и изпълнение на всеки израз в курсора ще съкрати всички таблици в дадената база данни.

Надявам се това да помогне и на някой друг :)

Алекс



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. конвертирайте PCRE регулярен израз в регулярен израз на mysql заявка

  2. MySQL - Не мога да вмъкна NULL стойност в колона, но имам зададена стойност по подразбиране?

  3. Избягайте от необработени SQL заявки в Laravel 4

  4. Мога ли да генерирам файл за миграция на база данни ruby ​​on rails от MySQL sql файл

  5. Последни x записи в блога - но само веднъж на потребител