2011-01-20 38 views
12

Tôi bị kẹt. Về cơ bản tôi muốn tạo một tệp dữ liệu LOCAL (tệp csv) từ một cơ sở dữ liệu từ xa bằng cách sử dụng lệnh OUTFILE.kết xuất mysql vào tệp cục bộ outfile từ cơ sở dữ liệu từ xa

Tôi về cơ bản, kéo dữ liệu .. và muốn tạo nó trên máy chủ tệp cục bộ của tôi so với việc tạo tệp outfile trên máy chủ từ xa. Tôi bị giới hạn về không gian từ xa, do đó tôi muốn tạo tệp cục bộ. Tôi đang thiếu gì về cách làm điều này? Cảm ơn!

Đây là cú pháp làm việc của tôi cho đến nay trên dòng lệnh (nó đang tạo ra các tập tin tôi muốn, nhưng trên máy chủ từ xa)

mysql -u test -pfoo --database test -h testdb201.name.host.com --port 3306 -ss -e "SELECT 'a','b','c' UNION SELECT col1, col2, col3 INTO OUTFILE '/tmp/mytest.csv' FIELDS TERMINATED BY ',' FROM tst_p000 limit 10" 
+0

Bạn có đang chạy lệnh này trên máy chủ từ xa hoặc máy chủ cục bộ của mình không? – Raghuram

+0

tôi không nghĩ là doable, bạn có đăng nhập ssh để máy chủ cơ sở dữ liệu? – ajreal

+0

chạy lệnh này trên máy chủ cục bộ. có tất cả các phím ssh của tôi hoạt động bình thường. tôi có thể làm cho nó để đổ tập tin, nhưng nó trên máy chủ từ xa. Bây giờ tôi thấy rằng OUTFILE là địa phương cho máy chủ của db. – jdamae

Trả lời

19

Theo MySQL Select syntax, Bạn không thể sử dụng OUTFILE để đầu ra vào một tệp bên ngoài chính máy chủ.

Bạn sẽ cần phải chuyển đổi đầu ra được phân cách bằng tab của truy vấn sang định dạng CSV như thế này (sed command credited here).

mysql -u test -pfoo --database test -h testdb201.name.host.com --port 3306 -ss -e "SELECT 'a','b','c' UNION SELECT col1, col2, col3 " | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > myDump.csv 
+0

ngọt ngào! Bí quyết đẹp. tôi ước tôi tốt với sed. hoạt động như một sự quyến rũ. Cảm ơn bạn đã giúp đỡ! – jdamae

+1

bạn có thể bắt đầu xây dựng cú pháp sed không? cảm ơn một lần nữa! – jdamae

+1

Hình ảnh lệnh sed chia thành bốn phần, mỗi phần được phân tách bằng dấu chấm phẩy. Phần đầu tiên của lệnh sed thay thế mọi tab bằng "," (bao gồm cả dấu ngoặc kép). Phần thứ hai thay thế tất cả các dòng bắt đầu bằng dấu ngoặc kép. Phần thứ ba thay thế tất cả các dòng kết thúc bằng dấu ngoặc kép. Phần cuối cùng loại bỏ tất cả các dòng mới khỏi truy vấn. –

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