Thực hiện truncate hoặc drop toàn bộ tables của một database [DATABASE_NAME]
Đôi khi việc truncate hoặc drop sẽ thất bại vì bị ràng buộc khóa ngoại trong các bảng, vì vậy cần tắt kiểm tra ràng buộc khóa ngoại trước khi thực hiện và bật lại sau khi truncate/drop hoàn tất.
Truncate toàn bộ table trong database [DATABASE_NAME]
1 2 3 |
mysql -e "SET FOREIGN_KEY_CHECKS=OFF"; mysql -Nse 'show tables' DATABASE_NAME | while read table; do mysql -e "truncate table $table" DATABASE_NAME; done mysql -e "SET FOREIGN_KEY_CHECKS=ON"; |
Hoặc thực hiện thông qua mysqldump với 2 options
– Dùng option –add-drop-table để tạo lệnh drop table, –no-data để loại thông tin data không cần thiết.
– Lọc những dòng chứa lệnh drop table và pipeline vào lệnh mysql
1 |
mysqldump -uUSERNAME -pPASSWORD --add-drop-table --no-data DATABASENAME | grep ^DROP | mysql -uUSERNAME -pPASSWORD DATABASENAME |
Drop toàn bộ table trong database [DATABASE_NAME]
1 2 3 |
mysql -e "SET FOREIGN_KEY_CHECKS=ON"; mysql -Nse 'show tables' DATABASE_NAME | while read table; do mysql -e "drop table $table" DATABASE_NAME; done mysql -e "SET FOREIGN_KEY_CHECKS=ON"; |
Hoặc thực hiện thông qua mysqldump với 2 options
– dùng option –add-drop-table để tạo lệnh drop table, –no-data để loại thông tin data không cần thiết.
– Lọc những dòng chứa lệnh drop table và pipeline vào lệnh mysql
– Thay DROP TABLE IF EXISTS thành TRUNCATE TABLE cho các dòng lệnh DROP vừa lấy được.
– pipeline kết quả vào mysql command.
1 |
mysqldump -uUSERNAME -pPASSWORD --add-drop-table --no-data DATABASENAME | grep ^DROP | sed -e 's/DROP TABLE IF EXISTS/TRUNCATE TABLE/g' | mysql -uUSERNAME -pPASSWORD DATABASENAME |
Notes: Backup trước khi thực hiện.