Câu trả lời được chấp nhận bởi RandomSeed có thể mất nhiều thời gian! Việc nhập bảng (chỉ để loại bỏ sau này) có thể rất lãng phí tùy thuộc vào kích thước.
Đối với tệp được tạo bằng
mysqldump -u user -ppasswd --opt --routines DBname > DBdump.sql
Tôi hiện nhận được một tệp có dung lượng khoảng 7GB, 6GB trong số đó là dữ liệu cho một bảng nhật ký mà tôi không 'cần' phải có ở đó; Việc tải lại tệp này mất vài giờ. Nếu tôi cần tải lại (cho mục đích phát triển hoặc nếu cần thiết để khôi phục trực tiếp), tôi sẽ đọc lướt tệp do đó:
sed '/INSERT INTO `TABLE_TO_SKIP`/d' DBdump.sql > reduced.sql
Và tải lại bằng:
mysql -u user -ppasswd DBname < reduced.sql
Điều này mang lại cho tôi một cơ sở dữ liệu hoàn chỉnh, với bảng "không mong muốn" được tạo nhưng trống. Nếu bạn thực sự không muốn các bảng, chỉ cần bỏ các bảng trống sau khi quá trình tải kết thúc.
Đối với nhiều bảng, bạn có thể làm như sau:
sed '/INSERT INTO `TABLE1_TO_SKIP`/d' DBdump.sql | \
sed '/INSERT INTO `TABLE2_TO_SKIP`/d' | \
sed '/INSERT INTO `TABLE3_TO_SKIP`/d' > reduced.sql
CÓ 'gotcha' - hãy coi chừng các thủ tục trong kết xuất của bạn có thể chứa "INSERT INTO TABLE_TO_SKIP".