Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana saya bisa memotong semua tabel dari Database MySQL?

Ok, saya menyelesaikannya sendiri di sini adalah prosedur tersimpan :)

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

Apa yang saya buat memanggil semua tabel dari database yang diberikan, ini akan membantu jika tabel di dalam database yang diberikan tidak memiliki pola untuk diikuti.

Jadi dengan memanggil DECLARE c1 CURSOR FOR SELECT Concat('TRUNCATE TABLE ', TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES WHERE INFORMATION_SCHEMA.TABLES.TABLE_SCHEMA = "@DatabaseName"; dan menyimpan hasil ke dalam kursor, saya dapat mengambil semua TRUNCATE TABLE x pernyataan yang dihasilkan oleh jumlah "n" tabel di dalam database yang diberikan, kemudian hanya dengan menyiapkan dan mengeksekusi setiap pernyataan di kursor, itu akan memotong semua tabel di dalam database yang diberikan.

Semoga ini bisa membantu orang lain juga :)

Alex



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL VARCHAR menyukai Tipe data dengan panjang karakter MIN dan MAX

  2. mengambil terlalu banyak waktu untuk mendapatkan data json besar dari server menggunakan perpustakaan voli php

  3. Mengapa saya mendapatkan HTML dalam ekspor MySQL saya ke CSV?

  4. mencapai batas memori dengan loop di dalam loop di dalam loop

  5. Pustaka kesalahan penumpang tidak dimuat