恢复仅数据的postesql转储?

时间:2018-06-25 18:19:49

标签: postgresql pg-dump

我有一个postgresql问题。

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

我正在恢复以纯文本格式提供的postgres仅数据转储。 pg_dump使用以下语法创建:

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

是否仍然可以在不知道数据库布局/架构的情况下将其加载到全新的数据库中?

根据对我的解释,仅数据转储是必需的,以便维护我们的数据库模式的机密性。我们的一位客户请求进行数据转储,他们需要从所述pg_dump中检索数据。

谢谢。

1 个答案:

答案 0 :(得分:-1)

这里最简单的是在没有严格数据类型的情况下模拟结构。您可以尝试将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);

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