Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để cắt bớt tất cả các bảng từ Cơ sở dữ liệu MySQL?

Ok, tôi đã tự giải quyết nó ở đây là thủ tục được lưu trữ :)

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

Điều tôi đang thực hiện là gọi tất cả các bảng từ cơ sở dữ liệu đã cho, điều này sẽ hữu ích nếu các bảng bên trong cơ sở dữ liệu đã cho không có mẫu để tuân theo.

Vì vậy, bằng cách gọi DECLARE c1 CURSOR FOR SELECT Concat('TRUNCATE TABLE ', TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES WHERE INFORMATION_SCHEMA.TABLES.TABLE_SCHEMA = "@DatabaseName"; và lưu kết quả vào con trỏ. Tôi có thể tìm nạp tất cả TRUNCATE TABLE x các câu lệnh được tạo bởi "n" số lượng bảng bên trong cơ sở dữ liệu nhất định, sau đó chỉ cần chuẩn bị và thực hiện từng câu lệnh trong con trỏ, nó sẽ cắt bớt tất cả các bảng bên trong cơ sở dữ liệu đã cho.

Hy vọng điều này cũng giúp ích cho người khác :)

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. Đóng kết nối MySQL trong PHP

  2. Tìm kiếm phân biệt chữ hoa chữ thường trong Django, nhưng bị bỏ qua trong Mysql

  3. Làm cách nào để triển khai một tìm kiếm trang web đơn giản với php và mySQL?

  4. Thứ tự MySQL trước khi Nhóm theo

  5. Giá trị cột tăng lên nếu tìm thấy giá trị trùng lặp