如何使用pg_restore在cloudsql中导入dump文件?

How to use pg_restore to import dump file in cloudsql?

我想将使用 pg_dump 创建的 .sql 文件导入云sql。

控制台和gcloud命令都是自定义类型的转储文件,因此被告知使用pg_restore。

在我的本地机器上

pg_restore -h cloud_sql_ip -U postgres -d database sqlfile.sql

当我使用命令时,出现以下错误:

pg_restore: error: connection to database "database" failed: could not connect to server: Operation timed out
        Is the server running on host "cloud_sql_ip" and accepting
        TCP/IP connections on port 5432?

如果我使用 gcloud sql 连接命令,它将毫无问题地连接。

我不知道为什么会收到错误消息。

感谢您的帮助。

要将 PostgreSQL 的 pg_restore 与 -d 一起使用,它需要能够连接到数据库,显然它不能,可能是由于防火墙问题。

也许您可以更改配置,让您从自己的计算机连接(我不知道,我不是 Google Clouse 用户。)

另一种选择是使用不带 -d 的 pg_restore 将自定义转储文件转换为真实的 sql 文件,然后使用以下方法之一加载该真实的 sql 文件您已经尝试过但由于格式错误而失败的其他方法。

pg_restore -f real_sql.sql sqlfile.sql

或者您可以重新运行 pg_dump,这次选择普通格式而不是自定义格式。

PostgreSQL 的 pg_restore -d 从你的本地(在我的本地机器上)要求你首先授权 你的 public IP,然后允许你的机器连接到您的 cloudsql 实例...

根据 GCP

You have not authorised any external networks to connect to your Cloud SQL instance.

如果您单击左侧导航栏中的“连接”link,在“网络”选项卡下,您将看到以上消息...您需要添加您的公共 IP(单击“添加网络”)

希望这对您有所帮助