2010-12-27 19 views
12

Làm cách nào để thực hiện việc này đúng cách. Tôi đang cố gắng để đặt tên cho tập tin sql đang được sản xuất bởi mysqldump vào ngày và thời gian hiện tại. Tôi đã có một số nghiên cứu trên trang web này và đã tìm thấy mã tại đây: How to get current datetime on Windows command line, in a suitable format for using in a filename?tạo tệp sao lưu sử dụng ngày và giờ làm tên tệp

Cố gắng trộn mã với mã hiện tại của tôi và tôi đã đưa ra mã này. Tệp được đặt tên vào ngày và giờ hiện tại nhưng chỉ có tệp 1kb và không tạo tệp .sql. Nó được coi là một tập tin sql 7 kb.

@For /f "tokens=2-4 delims=/ " %%a in ('date /t') do @(set mydate=%%c-%%a-%%b) 
@For /f "tokens=1-2 delims=/:" %%a in ('time /t') do @(set mytime=%%a%%b)  

@echo mydate= %mydate% 
@echo mytime= %mytime% 

mysqldump -u root -p --add-drop-table --create-options --password= onstor >c:\%mydate%_%mytime%.sql 

CẬP NHẬT Tôi không nghĩ rằng có một vấn đề với các lệnh mysqldump vì nó hoạt động tốt khi tôi làm điều đó theo cách này. Mã dưới đây chỉ sử dụng ngày làm tên tệp của nó.

@For /F "tokens=2,3,4 delims=/ " %%A in ('Date /t') do @( 
    Set Month=%%A 
    Set Day=%%B 
    Set Year=%%C 
)  

@echo DAY = %Day% 
@echo Month = %Month% 
@echo Year = %Year%  

mysqldump -u root --add-drop-table --create-options --password= onstor >c:\%Day%-%Month%-%Year%.sql 

Xin vui lòng trợ giúp, cảm ơn.

Trả lời

30

Trên Linux, chỉ cần đặt $(date +%Y-%m-%d-%H.%M.%S) để hiển thị ngày tháng và thời gian trong tên tập tin, vì vậy nó trông giống như:

mysqldump -u <user> -p <database> | bzip2 -c > <backup>$(date +%Y-%m-%d-%H.%M.%S).sql.bz2 

(Lệnh này cũng nén file bằng bzip2)

+1

Tác vụ này có hoạt động trong 'cron' không? – fishcracker

+0

Câu hỏi là cửa sổ cụ thể. – MxyL

+0

Đối với Linux: '$ (ngày +% Y-% m-% d-% H.% M.% S)' phải NHƯNG cái gì cho WINDOWS? –

4

Tôi nghĩ cú pháp của lệnh mysqldump của bạn là sai;

mysqldump -u root -p --add-drop-table --create-options --password= onstor 

Bạn sử dụng cả hai -p--pasword=, bạn chỉ nên sử dụng một tùy chọn. Và có một khoảng trống trước mật khẩu.

Chỉ cần thử chạy lệnh mysqldump trên dòng lệnh để xem thông báo lỗi. Hoặc thêm 2>&1 vào cuối lệnh trong tệp batchfile. Sau đó, bạn cũng sẽ thấy thông báo lỗi trong tệp đầu ra.

mysqldump -u root --add-drop-table --create-options --password=onstor >c:\%mydate%_%mytime%.sql 2>&1 
+0

tôi don Không nghĩ rằng có một vấn đề với lệnh mysqldump, xin vui lòng xem chỉnh sửa của tôi – user225269

+0

@ user225269: lệnh mysqldump là khác nhau trong ví dụ thứ hai của bạn. Nhưng dù sao, bạn có thể cho chúng tôi biết tệp 1kb có chứa gì không? – wimh

Các vấn đề liên quan