tas*_*ski 20 postgresql export copy csv
我对远程服务器上的数据库具有只读访问权限。所以,我可以执行:
COPY products TO '/tmp/products.csv' DELIMITER ',';
Run Code Online (Sandbox Code Playgroud)
但是在该服务器上我没有创建/保存文件的权限,所以我需要在我的本地机器上执行此操作。
当我连接到远程数据库时,如何执行命令将文件保存在本地计算机而不是远程服务器上?
或者,如何执行 Linux 命令以连接到远程数据库、执行查询并将输出作为文件保存到我的本地计算机?
Cra*_*ger 34
已经建议的两种方法似乎都不必要地复杂。
只需使用psql
的内置\copy
命令,它的工作方式与服务器端类似,COPY
但会通过有线协议将副本复制到客户端并使用客户端路径。
因为它是一个psql
反斜杠命令,所以省略了尾随的分号,例如:
\copy products TO '/tmp/products.csv' CSV DELIMITER ','
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅命令手册中的\copy
条目psql
和COPY
命令文档。
就像COPY
你可以使用\copy
一个(SELECT ...)
(在而非)复制数据时进行查询,而不是表名。
在少数有限情况下可能有用的通常较差的替代方案是使用:
psql -t -P format=unaligned -P fieldsep_zero=on -c 'SELECT * FROM tablename'
Run Code Online (Sandbox Code Playgroud)
并使用-o
标志或 shell 输出重定向将输出写入文件。你应该几乎总是\copy
优先使用这个。
归档时间: |
|
查看次数: |
45329 次 |
最近记录: |