通过ssh将psql输出保存到本地文件?

时间:2015-06-26 13:27:07

标签: ssh psql

我通过ssh连接到服务器并运行

psql

我想从服务器中提取数据库但我无法在远程保存文件,因为我没有写入权限。如何在本地保存?

1 个答案:

答案 0 :(得分:2)

而不是

ssh myhost psql

使用ssh隧道将本地psql连接到远程PostgreSQL,因此您可以\copy本地文件,例如

ssh -L 5599:localhost:5432 myhost

然后当该会话打开时,在单独的本地终端会话中:

psql -h localhost -p 5599

通过ssh隧道连接。这仅在远程系统允许来自localhost(127.0.0.1 / :: 1)的tcp / ip连接时才有效。它不必允许来自远程节点的tcp / ip PostgreSQL连接。

或者,您可以:

ssh myhost psql -c '"copy mytable to stdout"' > local_file.csv

将sd上的stdout流式传输到本地文件。

注意两层引用,因为本地shell使用第一层而远程shell使用第二层。

通常,最好的解决方案是使PostgreSQL能够侦听外部公共端口,并设置SSL,并使用hostssl中的pg_hba.conf条目允许您自己使用{{直接通过TCP / IP连接1}}使用SSL。那你就是:

psql