Postgresql

將遠端 Postgres 表導出到本地電腦上的 CSV 文件

  • August 6, 2018

我對遠端伺服器上的數據庫具有隻讀訪問權限。所以,我可以執行:

COPY products TO '/tmp/products.csv' DELIMITER ',';

但是在那台伺服器上我沒有創建/保存文件的權限,所以我需要在我的本地機器上執行此操作。

當我連接到遠端數據庫時,如何執行命令將文件保存在本地電腦而不是遠端伺服器上?

或者,我如何執行 Linux 命令以連接到遠端數據庫、執行查詢並將輸出作為文件保存到本地電腦?

已經提出的兩種方法似乎都過於復雜。

只需使用psql’s 的內置\copy命令,它就像伺服器端一樣工作,COPY但通過有線協議複製到客戶端並使用客戶端路徑。

因為它是一個psql反斜杠命令,所以您省略了結尾的分號,例如:

\copy products TO '/tmp/products.csv' CSV DELIMITER ','

有關更多詳細資訊,請參閱命令命令文件中\copy手​​冊條目psqlCOPY

就像COPY您在將數據複製出(但不能複制入)時使用查詢而不是表名\copy一樣。(SELECT ...)


在少數有限情況下可能有用的通常較差的替代方法是使用:

psql -t -P format=unaligned -P fieldsep_zero=on -c 'SELECT * FROM tablename'

並使用-o標誌或外殼輸出重定向將輸出寫入文件。您幾乎應該總是\copy優先使用它。

引用自:https://dba.stackexchange.com/questions/36235