2012-01-04 17 views
13

Tôi muốn biết cách truy xuất tệp bằng Vi trong MySQL. Tôi đăng nhập bằng:Truy xuất tệp bị mất bằng Vi trong MySQL

mysql -uuser -p -hserver -A database 

Sau đó, tôi làm:

\e 

Biên tập viên sẽ mở ra và tôi gõ truy vấn của tôi là 200 dòng, sau đó tôi :wq\G (nếu tôi lưu các tập tin nó nói: /tmp/sql9SbYQZ saved) và tôi thấy kết quả.

Bây giờ, nếu tôi mắc lỗi hoặc chạy một truy vấn khác và tôi cố gắng nhập lại \e, truy vấn bị mất.

ll /tmp/sql9SbYQZ 
ls: /tmp/sql9SbYQZ: No such file or directory 

Có cách nào để truy xuất tệp bị mất không?

Trả lời

30

Đây là những gì tôi đã thêm vào số .vimrc của mình để lưu truy vấn hiện tại trong trường hợp tôi đã nhầm lẫn.

nmap <F7> :w! /tmp/query.sql\| wq!<CR> 

Điều này sẽ tạo bản đồ cho khóa F7 (bạn có thể thay đổi khóa học). Vì vậy, mỗi lần bạn mở tệp bằng cách sử dụng edit hoặc \e, bạn thay đổi tệp bằng cách sử dụng phím F7.

Thao tác này sẽ lưu bản sao lưu truy vấn hiện tại của bạn vào /tmp/query.sql và sau đó lưu và đóng tệp tạm thời. Bằng cách này, nếu bạn mắc lỗi, bạn chỉ cần mở lại tệp sao lưu và thử lại.

Đây cũng là liên kết bạn có thể thích: http://vim.wikia.com/wiki/Open_the_last_edited_file

0

Dưới đây là một cái gì đó bạn có thể thử:

Trong Linux, làm như sau

$ cd 
$ cp .mysql_history mystuff.txt 
$ vi mystuff.txt 

Bạn sẽ thấy file .mysql_history. Máy khách mysql ghi lại tất cả các truy vấn và các lệnh được thi hành. Hy vọng rằng, truy vấn của bạn nằm trong đó.

Hãy thử!

1

Với trình soạn thảo vi/m được sử dụng với mysql, crontab và nhiều công cụ khác, công việc được thực hiện trong tệp tmp, như bạn thấy từ thư của mình.

Sửa (Big doah !, loại bỏ cruft về ls -l/tmp/..., bạn đã làm điều đó!)

Trong thời gian tới giải pháp là nói vim-w bộ đệm để một nộp tên của chosing của bạn, ví dụ:

w! /home/you/scripts/mysql2.sql 

Sau đó đóng trình soạn thảo với

q 

Lưu ý bạn có thể không nee d ! sau w.

Tôi hy vọng điều này sẽ hữu ích.

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