首页 > 解决方案 > 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
  1. 目的是restore.sql什么?
  2. toc.dat是二进制的,但我可以打开它,它看起来也像一个 sql 脚本。restore.sql 和的目的有何不同toc.dat

    文件中的以下引用没有回答我的问题:

    每个表和 blob 都有一个文件被转储,加上一个所谓的目录文件,以 pg_restore 可以读取的机器可读格式描述转储的对象。

  3. 由于 tar 转储restore.sql除了文件之外还包含文件,那么 sql 脚本文件与tar 转储和普通转储(只有一个 sql 脚本文件)有.dat什么区别?restore.sqltoc.dat

谢谢。

标签: postgresqldump

解决方案


  • 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.datrestore.sql


推荐阅读