SQL大全[1]
作者 佚名技术
来源 数据库编程
浏览
发布时间 2012-03-22
区.固定域是: 签名 12- 字节的序列 "PGBCOPY\n\377\r\n\0" --- 请注意空是签名是要求的一部分.(使用这个签名是为了让我们能够很容易看出文件是否已经被一个非 8 位安全的转换器给糟蹋了.这个签名会被换行符转换过滤器,删除空,删除高位,或者奇偶的改变而改变.) 整数布局域 以源机器的字节序的 int32 常量 0x1020304.如果在这里侦测到错误的字节序,那么读者很可能在后面的字段列造成了字节错位. 标志域 int32 位掩码表示该文件格式的重要方面.位是从 0(LSB)到 31 (MSB)编码的 --- 请注意这个域是以源机器的位权重存储的,后继的整数都是如此.位 16 - 31 是保留用做关键文件格式的;如果读者发现一个不认识的位出现在这个范围内,那么它应该退出.位 0-15 都保留为标志向后兼容的格式使用;读者可以忽略这个范围内的不认识的位.目前只定义了一个标志位,而其它的必须是零: Bit 16 如果为 1,那么在倾倒中包括了 OID;如果为 0,则没有 头扩展范围长度 int32 以字节计的头剩余长度,不包括自身.在初始的版本里,它将会是零,后面紧跟第一条元组.对该格式的更多的修改都将允许额外的数据出现在头中.读者应该忽略任何它不知道该如何处理的头扩展数据. 头扩展数据是一个用来保留一个自定义的数据训练用的.这个标志域无意告诉读者扩展区的内容是什么.头扩展的具体设计内容留给以后的版本用. 这样设计就允许向下兼容头附加(增加头扩展块,或者设置低位序标志位) 以及非向下兼容修改(设置高位标志位以标识这样的修改,并且根据需要向扩展区域增加支持数据). 元组 每条元组都以一个 int16 计数开头,该计数是元组中字段的数目.(目前,在一个表里的每条元组都有相同的计数,但可能不会永远这样.)然后后面不断出现元组中的各个字段,在字段数据后面可能跟着一个 int16 类型长度字.类型长度域是这样解释的: 零 数据域是 NULL.没有数据跟着. > 0 数据域是定长数据类型.和类型长字相同的准确的 N 字节. -1 数据域是变长的数据类型.下面四个字节是变长头, 它包含包括其自身在内的所有值长度. < -1 保留为将来使用. 对于非 NULL 域,读者可以检查这个类型长度是否匹配目标列的长度.这样就提供了一种简单但有用的检查,核实该数据是否预期数据. 在数据域之间没有对奇填充或者任何其它额外的数据.还要注意该格式并不区分一种数据类型是传值还是传参.这些东西都是非常有意的:它们可能可以提高这些文件的移植性(尽管位权重和浮点格式等问题可能仍然不能让你进行跨机器移动二进制数据). 如果在倾倒中包括了 OID,那么该 OID 域立即跟在域计数字后面.它是一个普通的域,只不过它没有包括在域计数.但它包括类型长度 --- 这样就允许我们不用花太多的劲就可以处理 4 字节和 8 字节,并且如果某个家伙允许 OID 是可选的话,那么还可以把 OID 显示成 NULL. 文件尾 文件尾包括一个 int16 字减 1.这样就很容易与一条元组的域计数字 相区分. 如果一个域计数字既不是 -1 也不是预期的字段的数目,那么读者应该报错.这样就提供了对丢失与数据的同步的额外的检查. 用法 下面的例子把一个表拷贝到标准输出, 使用竖直条(|)作为域分隔符: COPY country TO stdout USING DELIMITERS ''|''; 从一个 Unix 文件中拷贝数据到一个表范围中: COPY country FROM ''/usr1/proj/bray/sql/country_data''; 下面是一个可以从 stdin 中拷贝数据 到表中的例子(因此它在最后一行中有终止序列): AF AFGHANISTANAL ALBANIADZ ALGERIAZM &nbs |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 06—PL/SQL编程下一篇: 提高SQL Server安全性的一些建议
关于SQL大全[1]的所有评论