postgresql - 恢复仅数据的 postesql 转储?
问题描述
我有一个postgresql问题。
我对postgresql有点陌生,所以请多多包涵。
我正在努力以纯文本格式恢复提供的 postgres data-only-dump。pg_dump 是使用以下语法创建的:
$> pg_dump -a -h*** -U *** -T *** -T**** -T*** > outfile.sql
无论如何在不知道数据库的布局/模式的情况下将其加载到全新的数据库中?
根据向我解释的内容,需要仅数据转储以维护我们的 db-schema 的机密性。我们的一位客户请求了数据转储,他们需要从所述 pg_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);
此外,您可以按原样使用您的转储,然后尝试猜测神秘的机密数据库模式......
推荐阅读
- three.js - 如何为一个动作中包含所有动画的模型制作动画?
- reactjs - 尝试制作一个包装器来处理 React 中的一些重复代码;如何使用论点?
- certificate - 如何确定自签名证书是否放置在 TPM 中?
- javascript - 如何在 Vue.js 中创建回文检查
- reactjs - 使用 useEffect 挂钩在状态更改时更新地图功能
- visual-studio - 没有从 ListView.Builder 打印到模拟器中,而 initState 显示我的列表有 2 个元素
- typescript - 是否不能在泛型函数中指定一种并推断一种类型
- angular - 无法编译项目 Angular 错误 NG8002、8001
- angular - 每次Angular Typescript都想在for循环中创建一个新数组
- java - 在休眠中插入新行