Postgresql
將遠端 Postgres 表導出到本地電腦上的 CSV 文件
我對遠端伺服器上的數據庫具有隻讀訪問權限。所以,我可以執行:
COPY products TO '/tmp/products.csv' DELIMITER ',';
但是在那台伺服器上我沒有創建/保存文件的權限,所以我需要在我的本地機器上執行此操作。
當我連接到遠端數據庫時,如何執行命令將文件保存在本地電腦而不是遠端伺服器上?
或者,我如何執行 Linux 命令以連接到遠端數據庫、執行查詢並將輸出作為文件保存到本地電腦?
已經提出的兩種方法似乎都過於復雜。
只需使用
psql
’s 的內置\copy
命令,它就像伺服器端一樣工作,COPY
但通過有線協議複製到客戶端並使用客戶端路徑。因為它是一個
psql
反斜杠命令,所以您省略了結尾的分號,例如:\copy products TO '/tmp/products.csv' CSV DELIMITER ','
有關更多詳細資訊,請參閱命令和命令文件中的
\copy
手冊條目psql
。COPY
就像
COPY
您在將數據複製出(但不能複制入)時使用查詢而不是表名\copy
一樣。(SELECT ...)
在少數有限情況下可能有用的通常較差的替代方法是使用:
psql -t -P format=unaligned -P fieldsep_zero=on -c 'SELECT * FROM tablename'
並使用
-o
標誌或外殼輸出重定向將輸出寫入文件。您幾乎應該總是\copy
優先使用它。