2010-05-10 34 views
5

Tôi có một kịch bản lệnh shell trên máy chủ a. Tập lệnh sẽ phát ra tệp csv vào thư mục cục bộ. Vấn đề là máy chủ cơ sở dữ liệu nằm trên máy chủ b. Làm thế nào để sử dụng chọn * vào outfile trong một thiết lập như thế này?MySQL SELECT INTO OUTFILE đến một máy chủ khác?

tôi nhận được

Can't create/write to file '/home/username/test.csv/' (Errcode: 2) 

Giải Quyết tải dữ liệu infile bằng cách sử dụng từ khóa 'ĐỊA PHƯƠNG'. Có cái gì đó như thế cho outfile?

Trả lời

11

select into outfile chỉ có thể tạo tệp trên máy chủ chứ không phải máy khách.

Đây là những gì hướng dẫn khuyến cáo cho tình hình của bạn:

Nếu bạn muốn tạo ra các kết quả tập tin trên một số máy chủ của khách hàng khác ngoài host server, bạn không thể sử dụng CHỌN ... INTO OUTFILE. Trong trường hợp đó, bạn thay vào đó, nên sử dụng lệnh như mysql -e "SELECT ..."> file_name thành tạo tệp trên máy khách.

http://dev.mysql.com/doc/refman/5.1/en/select.html

+0

Bất kỳ cơ hội họ sẽ được thực hiện từ khóa LOCAL vào outfile như họ làm với infile trong phiên bản tiếp theo? Vấn đề này đơn giản là gây ra rất nhiều công việc phụ .. Cảm ơn bạn! – ThinkCode

+0

Tôi nghi ngờ điều đó. Bạn đã thử phương pháp được khuyến cáo sử dụng 'mysql -e' và chuyển hướng đầu ra sang một tệp cục bộ? –

+1

Vì nó đã được bán phá giá nó như là văn bản và không có cách nào để bán nó như là tập tin csv, tôi đã phải bỏ qua cách tiếp cận này hoàn toàn. MySQL là làm cho nó thực sự khó khăn để thực hiện một nhiệm vụ đơn giản như vậy: (Cảm ơn một lần nữa! – ThinkCode

0

Sử dụng lệnh dưới đây:

mysql -uusername -ppassword -h DBIP DBNAME -e \ 
"SELECT * FROM tablename" > /destinationpath/outputfilename.csv 
Các vấn đề liên quan