PostgreSQL之精妙的数据库导入导出工具架构 (四)
2011-12-02 19:52
501 查看
(四)pg_backup_custom.c文件的导出格式研究
1 可仔细体会文件如何存放数据
2 可体会文件头中和版本有关的信息(文件版本,程序版本)
Byte格式:
单字符 (调用fputc输出)
Int格式:符号位 |
字节1 | 字节2…
(最低位优先的字节序列)
1 可仔细体会文件如何存放数据
2 可体会文件头中和版本有关的信息(文件版本,程序版本)
基本部分 | 结构 | 备注 |
文件头 | dump标识 | 5个字符= PGDMP |
文件版本标识 | 3个char=vmaj | vmin | vrev version = ((vmaj * 256 + vmin) * 256 + vrev) * 256 + 0; version:最终得出的文件版本,int型 | |
“integer”的长度 | 1个byte=4 | |
偏移数值的长度 | 1个byte=4 | |
备份文件的格式 | 1个byte=4 | |
压缩级别 | 根据文件版本确定:1个byte或1个int | |
创建时间 | 7个int=xxx | |
数据库名 | 字符串=len+data=int+byte[] | |
服务器的版本 | 字符串 | |
程序的版本 | 字符串 | |
可导出对象元信息链 | toc count | int = 4,toc链上元素的个数 |
dumpID | int = 4 | |
dataDumper | int * = 4,函数指针 | |
tableoid | 字符串 | |
OID | 字符串 | |
tag | 字符串,对象名(对象是表,即表名) | |
desc | 字符串,对象类型(对象是表,即“TABLE”) | |
defn | 字符串,对象的create SQL语句 | |
dropStmt | 字符串,对象的drop SQL语句 | |
copyStmt | 字符串,对象的drop SQL语句 | |
namespace | 字符串,对象所属的schema | |
tablespace | 字符串,对象所在的tablespace | |
owner | 字符串,对象所有者 | |
withOids | 字符串,对象是否有oid,只有“true”和“false”值 | |
dependencies | 字符串list,对象的依赖关系 | |
NULL | 结束标志 | |
数据块 | 有两种类型: | 三个标志:byte BLK_DATA:表数据的标识 BLK_BLOB:没有被使用 BLK_BLOBS:所有大对象的数据块 |
普通数据 | 基本结构 ::= BLK_DATA | dumpId |data | 0 BLK_DATA ::= 1 byte dumpId::= int4 data ::= copyState / insertStates copyState ::= chunkLen | chunkBytes| … | chunkLen | chunkBytes | . | \n | \n | \n insertStates ::= insert SQL statement | ; | \n | … | insert SQL statement | ; | \n | \n | \n | |
大对象块 | 基本结构 ::= BLK_BLOBS | dumpId | one LOB | … | one LOB | 0 BLK_BLOBS ::= 1 byte dumpId::= int4 one LOB ::= OID | chunkLen | chunkBytes| …. | chunkLen | chunkBytes | 0 OID ::= int4 chunkLen ::= int4 chunkBytes ::= n byte 1) BLK_BLOBS:大对象的标志,以byte格式写出 2) dumpId:可导出对象的一个统一导出编号,以int格式写出 3) oid:大对象的oid,以int格式写出 4) [数据长度/数据块]:可以有多个,“[”和“]”符号表示可选;长度以int格式写出; 5) 0:标识结束 |
单字符 (调用fputc输出)
Int格式:符号位 |
字节1 | 字节2…
(最低位优先的字节序列)
相关文章推荐
- PostgreSQL之精妙的数据库导入导出工具架构 (二)
- PostgreSQL之精妙的数据库导入导出工具架构 (十一)
- PostgreSQL之精妙的数据库导入导出工具架构 (五)
- PostgreSQL之精妙的数据库导入导出工具架构 (九)
- PostgreSQL之精妙的数据库导入导出工具架构 (六)
- PostgreSQL之精妙的数据库导入导出工具架构 (十)
- PostgreSQL之精妙的数据库导入导出工具架构 (一)
- PostgreSQL之精妙的数据库导入导出工具架构 (三)
- PostgreSQL之精妙的数据库导入导出工具架构 (八)
- PostgreSQL之精妙的数据库导入导出工具架构 (十二)
- PostgreSQL之精妙的数据库导入导出工具架构 (七)
- Postgresql数据库数据简单的导入导出
- postgreSQL数据库导入导出
- 利用第三方工具进行数据库转移——导入导出、备份还原
- Sqoop -- 用于Hadoop与关系数据库间数据导入导出工作的工具
- MySQL数据的导出和导入工具:mysqldump(备份数据库的命令)
- MySQL数据的导出和导入工具:mysqldump(备份数据库的命令) (转)
- postgresql数据库导入导出
- 利用PL/SQL工具导出、导入数据库、视图、解发器等
- Postgresql数据库导入和导出CSV格式