postgresql - 如何提取 bzipped PostgreSQL 转储的一部分
问题描述
我有一个 PostgreSQL 纯格式转储,只需要两三个表的数据。转储为 gz2 格式。
bzcat dump.sql.gz | perl -lne 'print if /^COPY tablename/../^\\\.$/' > something.sql
不工作。也试过
bzip2 -dc dump.sql.gz|perl -lne 'print if /^COPY tablename/../^\\\.$/' > something.sql
转储文件超过 30GB。
解决方案
表名可能需要是模式限定的。
whatever_cat | perl -lne 'print if /^COPY public\.tablename/../^\\\.$/'
这将取决于使用的 pg_dump 版本。该更改实际上是在错误修复版本中开始的,是否是出于安全考虑 (CVE-2018-1058)
推荐阅读
- swiftui-list - onLongPressGesture 使列表项在 SwiftUI 中不可滚动
- java - 从父 POM 部署模块 - Java Maven
- apache-spark - apache_beam spark runner with python 不能在远程spark集群上实现?
- indexing - 如何为新语言创建索引文件以支持查找方法的引用?
- apache-storm - 当我将拓扑提交给storm时,我收到“lein”的错误
- node.js - Angular8 和 Node 13 分段错误的玩笑
- ios - 带有背景图像的 UIButton 角半径
- c# - 如果孩子存在C#,树层次结构设置标志为真
- javascript - 设置通配符值
- reporting-services - 新页面 RDLC 报告中缺少行标签