当前位置: 首页 > 知识库问答 >
问题:

如何转储Google Cloud SQL for PostgreSQL DB以导入回常规PostgreSQL DB?

阚通
2023-03-14

我试图从Google Cloud SQL(PostgreSQL)实例导出数据,以便使用pg_dumppg_restore将其导入到常规Postgres数据库:

pg_dump -h sql_proxy -F t --no-owner --no-acl > backup.tar
pg_restore backup.tar -c

但是,当运行pg_restore时,我会遇到以下错误:

PG_RESTORE:[archiver(db)]处理TOC时出错:PG_RESTORE:[archiver(db)]来自TOC条目197的错误;1259 17010表xxx postgres pg_restore:[archiver(db)]无法执行查询:错误:角色“postgres”不存在命令是:将TABLE public.xxx OWNER改为postgres;

pg_restore:[archiver(db)]来自TOC条目198错误;1259 17017表xxy postgres pg_restore:[archiver(db)]无法执行查询:错误:角色“postgres”不存在命令是:将TABLE public.xxy OWNER改为postgres;

...

我尝试了几种不同的旗子,但没有成功。我找到了很多关于如何迁移的文章(从PostgreSQL迁移到Google Cloud SQL for PostgreSQL),而Google Cloud文档只描述了如何将要导入的数据再次导出到Cloud SQL DB中。

共有1个答案

朱建弼
2023-03-14

您需要在要导入转储的实例中预先创建引用的角色。

有两种方法可以实现这一点:

  • 使用pg_dumpall而不是pg_dump或
  • pg_dumpall--仅全局,然后恢复转储(这将创建角色等)
 类似资料:
  • 我有个关于docker和Postgres的问题。每次docker启动并要导入给定转储时,我都要建立一个新的postgres数据库。 我的DockerFile:(我已经用一个以.sh结尾的脚本试过了) 根据https://hub.docker.com/_/postgres/dump.sql必须用于导入数据库。 使用docker启动应用程序只提供:

  • 问题内容: 按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 已锁定 。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 是否有任何文献记载的技术可以加快mySQL转储和导入的速度?

  • 我的代码出了什么问题? 如果导出成功,数据存储在哪里?

  • 问题内容: 如何从MySQL导入“ xxxx.sql”转储到PostgreSQL数据库? 问题答案: 不要指望没有编辑就可以工作。也许很多编辑。 mysqldump有一个兼容性参数,其中“名称”可以是“ oracle”或“ postgresql”,但这不能保证兼容性。我认为像ANSI_QUOTES这样的服务器设置也有一定作用。 如果包含用于创建转储的完整命令以及收到的任何错误消息,而不仅仅是说“对

  • 问题内容: 我想要一个npm脚本来创建/配置/等。最后导入一个SQL转储。整个创建,配置等都可以正常工作,但是,我无法使导入正常工作。永远不会插入数据。这就是我所拥有的(不要嵌套嵌套的回调,因为它们会变成promise): 我还尝试了Sequelize(ORM)进行以下操作: 问题答案: 这是我使用迁移框架设置初始Sequelized导入的方法。这里有很多事情要做,但总之我: 在migration

  • 问题内容: 这是我的代码: 打印:这正是我想要的。 但是,我有一个列表要附加到该列表上,然后突然所有内容都变得“异常”。这是代码: 打印以下内容: 我怎样才能得到一个简单的? 问题答案: 为什么:日期是对象 在Python中,日期是对象。因此,当你操作它们时,你将操作对象,而不是字符串,时间戳或其他任何对象。 Python中的任何对象都有两个字符串表示形式: 可以使用函数获取“打印”所使用的常规表