我对远程服务器上的数据库具有只读访问权限。所以,我可以执行:
COPY products TO '/tmp/products.csv' DELIMITER ',';
但是在那台服务器上我没有创建/保存文件的权限,所以我需要在我的本地机器上执行此操作。
当我连接到远程数据库时,如何执行命令将文件保存在本地计算机而不是远程服务器上?
或者,我如何执行 Linux 命令以连接到远程数据库、执行查询并将输出作为文件保存到本地计算机?
我对远程服务器上的数据库具有只读访问权限。所以,我可以执行:
COPY products TO '/tmp/products.csv' DELIMITER ',';
但是在那台服务器上我没有创建/保存文件的权限,所以我需要在我的本地机器上执行此操作。
当我连接到远程数据库时,如何执行命令将文件保存在本地计算机而不是远程服务器上?
或者,我如何执行 Linux 命令以连接到远程数据库、执行查询并将输出作为文件保存到本地计算机?
已经提出的两种方法似乎都过于复杂。
只需使用
psql
's 的内置\copy
命令,它就像服务器端一样工作,COPY
但通过有线协议复制到客户端并使用客户端路径。因为它是一个
psql
反斜杠命令,所以您省略了结尾的分号,例如:有关更多详细信息,请参阅命令和命令文档中的
\copy
手册条目psql
。COPY
就像
COPY
您在将数据复制出(但不能复制入)时使用查询而不是表名\copy
一样。(SELECT ...)
在少数有限情况下可能有用的通常较差的替代方法是使用:
并使用
-o
标志或外壳输出重定向将输出写入文件。您几乎应该总是\copy
优先使用它。Linux命令是: