postgresql - tar 转储中的 sql 脚本文件的用途是什么?
问题描述
$ tar -tf dvdrental.tar
toc.dat
2163.dat
...
2189.dat
restore.sql
提取后
$ file *
2163.dat: ASCII text
...
2189.dat: ASCII text
restore.sql: ASCII text, with very long lines
toc.dat: PostgreSQL custom database dump - v1.12-0
- 目的是
restore.sql
什么? toc.dat
是二进制的,但我可以打开它,它看起来也像一个 sql 脚本。restore.sql
和的目的有何不同toc.dat
?文件中的以下引用没有回答我的问题:
每个表和 blob 都有一个文件被转储,加上一个所谓的目录文件,以 pg_restore 可以读取的机器可读格式描述转储的对象。
- 由于 tar 转储
restore.sql
除了文件之外还包含文件,那么 sql 脚本文件与tar 转储和普通转储(只有一个 sql 脚本文件)有.dat
什么区别?restore.sql
toc.dat
谢谢。
解决方案
restore.sql
不被 使用pg_restore
。请参阅以下评论src/bin/pg_dump/pg_backup_tar.c
:* The tar format also includes a 'restore.sql' script which is there for * the benefit of humans. This script is never used by pg_restore.
toc.dat
是目录。它包含在转储中创建和删除每个对象的命令,并用于pg_restore
创建对象。它还包含从文件COPY
加载数据的语句。*.dat
您可以使用 以人类可读的形式提取目录
pg_restore -l
,并且可以使用 编辑结果以仅恢复特定对象pg_restore -L
。这些
<number>.dat
文件是包含表数据的文件,它们由和中的COPY
语句使用。toc.dat
restore.sql
推荐阅读
- opengl - OpenCL OpenGL 互操作和元素缓冲区
- node.js - 无法 saveAndClose() GoogleDoc Api?有没有其他方法可以在 batchUpdate 之后刷新更新?
- php - 如何使用“\”拆分字符串以及拆分的最佳选项是什么
- javascript - 在不创建对象的情况下如何调用 Joi 类的方法?
- node.js - 如何在 cypress 测试之前准备 Db?
- sql - 无法在全局环境中使用代码和缓存选项运行 SQL 块
- react-native - 带有故事书的 Webpack 配置
- swift - 双重转换为字符串,因为标签文本显示错误的数字
- c++ - 在 main 之外编译 mDNS 功能时出错
- selenium - 在无头 Chrome 中跳过证书验证(在 WebDriver 中)