2010-11-10 36 views
20

Tôi đang cố gắng thực hiện foo.sql bằng cách sử dụng lệnh nguồn trong MySQL.Kết quả nguồn MySQL đầu ra cho tệp nhật ký

Khi tôi gõ lệnh, các tập tin có nguồn gốc phù hợp:

mysql> source ~/foo.sql 

Giờ đây, có rất nhiều báo cáo được thực hiện trong tập tin này và tôi muốn xem lại những thành công/thất bại của các báo cáo này. Có cách nào tôi có thể ống các kết quả của các báo cáo vào một tập tin đăng nhập, foo.txt?

Tôi đang nghĩ đến một cái gì đó dọc theo dòng:

mysql> source ~/foo.sql into outfile ~/foo.txt 

Tuy nhiên, gõ lệnh này dường như cho rằng tất cả mọi thứ sau khi tuyên bố nguồn là một trong những tên tập tin; do đó, nó đang cố gắng để nguồn một tập tin có tên '~/foo.sql vào outfile ~/foo.txt', mà rõ ràng là không tồn tại.

+0

Bạn đã kiểm tra lệnh 'pager' chưa? – Konerak

Trả lời

37

Từ bên trong máy khách MySQL của bạn, loại

tee session.out 

Từ thời điểm đó , tất cả I/O trong phiên khách hàng hiện tại của bạn được ghi vào tệp 'session.out'

+0

Cảm ơn, đây chính xác là những gì tôi đang tìm kiếm. – Isaac

+10

Ngoài ra, nếu bạn muốn dừng đầu ra, chỉ cần gõ 'notee' ([source] (http://dev.mysql.com/doc/refman/5.0/en/mysql-commands.html)) –

+0

Câu trả lời hay! ! – Amol

4

Bạn có thể làm điều đó từ dấu nhắc shell:

$ mysql -p dbname <foo.sql> foo.txt 
2

Sử dụng dòng lệnh:

mysql -p dbname < ~/foo.sql > ~/foo.txt 
+0

Tôi đã thử cách này nhưng tệp được tạo không chứa gì. – Isaac

+1

Có phải tải cơ sở dữ liệu như bạn muốn không? Chỉ các thông báo lỗi mới được thêm vào tệp. Oh, nó cũng sẽ dừng lại trên các lỗi đầu tiên, trừ khi bạn cung cấp cho nó một tùy chọn dòng lệnh để tiếp tục đi qua các lỗi. – SorcyCat

+0

Hoàn thành không có lỗi lúc đầu. Sau đó tôi đã thử nó một lần nữa và thiết lập max_allowed_packet của tôi đến 5M vì vậy nó sẽ cố ý lỗi. Đã xảy ra lỗi nhưng foo.txt không liệt kê lỗi này. – Isaac

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