2009-04-07 34 views

Trả lời

6

Bạn có thể lấy tên bảng với

SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'your db' 

Và làm cho truncate,

thậm chí, bạn có thể làm

SELECT 'TRUNCATE TABLE ' + table_name + ';' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'your db' 

Và sau đó lặp resultset thực hiện truy vấn chuỗi cho mỗi bản ghi .

2

Có. Về cơ bản, bạn cần có danh sách tất cả các Bảng trong Cơ sở dữ liệu, sau đó lặp lại qua danh sách đó và phát hành TRUNCATE TABLE $tablename cho mỗi mục nhập.

này trông giống như một thực hiện đủ phong nha: Truncate all tables in a MySQL database

12

Cách đơn giản nhất để làm điều đó, nếu bạn có những đặc quyền, là:

 
DROP DATABASE dbName; 
CREATE DATABASE dbName; 
USE DATABASE dbName; 

Cách khác là để truy vấn cơ sở dữ liệu information_schema cho trigger, các thói quen được lưu trữ (các thủ tục và chức năng), các bảng, các khung nhìn và có thể là một cái gì đó khác, và thả riêng chúng.

Ngay cả sau này, cơ sở dữ liệu của bạn có thể vẫn không ở trạng thái giống như mới được tạo, vì nó có thể có bộ ký tự mặc định tùy chỉnh và bộ đối chiếu. Sử dụng ALTER DATABASE để thay đổi điều đó.

Khi các tính năng tiếp tục được thêm (sự kiện ...), bạn sẽ càng ngày càng hoạt động theo cách này. Vì vậy, thực sự, cách duy nhất để hoàn toàn trống rỗng cơ sở dữ liệu là thả nó và tạo lại nó.

+0

bạn sẽ mất cấu trúc của bảng –

+1

Vâng khởi động chủ đề không nói bất cứ điều gì ngoại trừ anh muốn một cơ sở dữ liệu trống có cùng tên, do đó, nó hoàn toàn trả lời câu hỏi. Không có ý nghĩa để đưa ra các giả định sai, đó là lý do tại sao câu trả lời này nhận được +1 từ tôi. – Flavius

+0

Nếu người dùng không có đặc quyền 'CREATE DATABASE', họ sẽ bị kẹt. –

4

Bạn có thể nhận danh sách tất cả các bảng trong cơ sở dữ liệu ($databaseName), lặp qua tất cả và áp dụng TRUNCATE TABLE cho mỗi bảng.

$result = mysqli_query($link, "SHOW TABLES IN `$databaseName`"); 
while ($table = mysqli_fetch_array($result)) { 
    $tableName = $table[0]; 
    mysqli_query($link, "TRUNCATE TABLE `$databaseName`.`$tableName`"); 

    if (mysqli_errno($link)) echo mysqli_errno($link) . ' ' . mysqli_error($link); 
    else echo "$tableName was cleared<br>"; 
} 

Điều này sẽ xóa nội dung của tất cả các bảng trong cơ sở dữ liệu, giữ cấu trúc.

+1

Vui lòng [sửa] với nhiều thông tin hơn. Chỉ có mã và câu trả lời "dùng thử" này mới được [nản lòng] (// meta.stackexchange.com/questions/196187), vì chúng không chứa nội dung có thể tìm kiếm được và không giải thích tại sao một người nào đó nên "thử cái này". Chúng tôi nỗ lực ở đây để trở thành một nguồn lực cho kiến ​​thức. – Mogsdad

2

Điều này phù hợp với tôi.

mysql -u < DB-USER > -p<DB-PASS> --silent --skip-column-names -e "SHOW TABLES" <DB-NAME> | xargs -L1 -I% echo 'DROP TABLE `%`;' | mysql -u < DB-USER > -p< DB-PASS > -v < DB-NAME > 
Các vấn đề liên quan