首页 > 解决方案 > 恢复仅数据的 postesql 转储?

问题描述

我有一个postgresql问题。

我对postgresql有点陌生,所以请多多包涵。

我正在努力以纯文本格式恢复提供的 postgres data-only-dump。pg_dump 是使用以下语法创建的:

$> pg_dump -a -h*** -U *** -T *** -T**** -T*** > outfile.sql

无论如何在不知道数据库的布局/模式的情况下将其加载到全新的数据库中?

根据向我解释的内容,需要仅数据转储以维护我们的 db-schema 的机密性。我们的一位客户请求了数据转储,他们需要从所述 pg_dump 中检索数据。

谢谢你。

标签: postgresqlpg-dump

解决方案


这里最简单的看起来是没有严格数据类型的模拟结构。您可以尝试将COPY语句转换为CREATE TABLE,例如:

MacBook-Air:~ vao$ pg_dump -d db -t person -a | grep COPY
COPY person (login_name, display_name, abstract, ts_abstract) FROM stdin;

所以你添加了几个sed:

MacBook-Air:~ vao$ pg_dump -d db -t person -a | grep COPY | sed 's#COPY#CREATE TABLE#g' | sed 's#,# text,#g' | sed 's#)# text)#g' | sed 's# FROM stdin##g'
CREATE TABLE person (login_name text, display_name text, abstract text, ts_abstract text);

此外,您可以按原样使用您的转储,然后尝试猜测神秘的机密数据库模式......


推荐阅读