Mam dostęp tylko do odczytu do bazy danych na zdalnym serwerze. Więc mogę wykonać:
COPY products TO '/tmp/products.csv' DELIMITER ',';
Ale na tym serwerze nie mam uprawnień do tworzenia / zapisywania pliku, więc muszę to zrobić na moim komputerze lokalnym.
Kiedy łączę się ze zdalną bazą danych, jak mogę wykonać polecenie zapisania pliku na moim komputerze lokalnym zamiast na serwerze zdalnym?
Lub jak mogę wykonać polecenie Linuksa, aby połączyć się ze zdalną bazą danych, wykonać zapytanie i zapisać dane wyjściowe jako plik na moim komputerze lokalnym?
źródło
psql
skrypt, zaczynając odBEGIN
, a następnie wykonując\copy
polecenia, a następnieCOMMIT
. Lub użyjpsql -f
do uruchomienia skryptu zamiast korzystania z dokumentu tutaj.-A
zamiast,-P format=unaligned
a także myślę, że potrzebujesz-P fieldsep=,
Polecenie Linux to:
źródło
-t -P format=unaligned
do tego polecenia, dostaniesz coś nieco bliższego, na przykład błędny plik CSV rozdzielany potokami, ale potoki w tekście nie zostaną usunięte, więc byłoby to nieprawidłowe.-P fieldsep=','
poza tym, że byłoby to jeszcze bardziej prawdopodobne, że spowoduje błędy z powodu braku ucieczki.-P fieldsep_zero=on
byłoby OK, gdybyś nie miał nic przeciwko parsowaniu tekstu rozdzielanego znakami pustymi, ponieważ puste bajty nie mogą wystąpićpsql
naturalnie w danych wyjściowych.