2011-01-20 14 views
12

Utknąłem. Zasadniczo chcę utworzyć plik danych LOCAL (plik csv) ze zdalnej bazy danych za pomocą polecenia OUTFILE.zrzut mysql do pliku wyjściowego localhost ze zdalnej bazy danych

Jestem zasadniczo, ciągnąc dane .. i chcę go utworzyć na moim lokalnym serwerze plików w porównaniu do tworzenia outfile na serwerze zdalnym. Mam zdalne ograniczanie przestrzeni, dlatego chcę utworzyć plik lokalnie. Czego mi brakuje, jak to zrobić? Dzięki!

To moja składnia pracy tak daleko w wierszu poleceń (jest tworzenie pliku chcę, ale na zdalnym serwerze)

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

Czy uruchamiasz to polecenie na serwerze zdalnym lub serwerze lokalnym? – Raghuram

+0

Nie sądzę, że jest to wykonalne, czy masz login ssh na serwerze baz danych? – ajreal

+0

uruchamianie tego polecenia na serwerze lokalnym. wszystkie moje klucze ssh działają poprawnie. mogę go pobrać zrzutu pliku, ale jest na serwerze zdalnym. Widzę teraz, że OUTFILE jest lokalny dla serwera db. – jdamae

Odpowiedz

19

Zgodnie z MySQL Select syntax, nie można używać do produkcji OUTFILE do pliku spoza samego serwera.

Konieczne jest przekonwertowanie danych wyjściowych z kwerendy rozdzielanych tabulatorami do formatu CSV w ten sposób (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

słodki! miła sztuczka. Chciałbym być dobry z sed. działa jak marzenie. dzięki za pomoc! – jdamae

+1

czy możesz rozwinąć składnię sed? dzięki jeszcze raz! – jdamae

+1

Zdjęcie komendy sed podzielone na cztery części, każda oddzielona średnikiem. Pierwsza część polecenia sed zastępuje każdą kartę słowem "," (łącznie z cytatami). Druga część zastępuje wszystkie początkowe wiersze podwójnymi cudzysłowami. Trzecia część zastępuje wszystkie końcowe linie podwójnymi cudzysłowami. Ostatnia część usuwa wszystkie nowe linie z zapytania. –

Powiązane problemy