试图理解Postgres在C#中的二进制复制格式

时间:2009-04-17 05:09:24

标签: c# .net postgresql

考虑以下关于二进制复制的PostgreSQL documentation的文本:

  

11字节序列PGCOPY \ n \ 377 \ r \ n \ 0 -   请注意,零字节是必需的   签名的一部分。 (签名   旨在让您轻松   识别已经存在的文件   由非8位清洁转移提供。   此签名将被更改   行尾结束过滤器,   丢弃零字节,丢弃高位,   或奇偶校验变化。)

我可以创建标题的其余部分,但是\ 377是什么意思?我认为单个字节中最大的值是256?

此外,在示例中:

0000000   P   G   C   O   P   Y  \n 377  \r  \n  \0  \0  \0  \0  \0  \0
0000020  \0  \0  \0  \0 003  \0  \0  \0 002   A   F  \0  \0  \0 013   A
0000040   F   G   H   A   N   I   S   T   A   N 377 377 377 377  \0 003
0000060  \0  \0  \0 002   A   L  \0  \0  \0 007   A   L   B   A   N   I
0000100   A 377 377 377 377  \0 003  \0  \0  \0 002   D   Z  \0  \0  \0
0000120 007   A   L   G   E   R   I   A 377 377 377 377  \0 003  \0  \0
0000140  \0 002   Z   M  \0  \0  \0 006   Z   A   M   B   I   A 377 377
0000160 377 377  \0 003  \0  \0  \0 002   Z   W  \0  \0  \0  \b   Z   I
0000200   M   B   A   B   W   E 377 377 377 377 377 377

当我解释格式时,那些相同的377值代表什么,它们不应该是\ 0?

如果任何人可以帮助其他格式,我们将不胜感激。我可以作弊并使用CVS数据库副本,但是我需要复制的行数(以百万计)我理解二进制格式在速度方面比CVS有很多优势。

2 个答案:

答案 0 :(得分:4)

\377是八进制 - 它的十进制值是255.还有什么其他格式让你特别困惑吗?

答案 1 :(得分:1)

基本上,使用二进制格式不会获得任何显着的加速。它有不同的好处,但加载数据的速度并不是其中之一。

只需使用标准的csv和COPY命令就可以了。