Попытка разобраться в формате двоичного копирования Postgres в C # - PullRequest
2 голосов
/ 17 апреля 2009

Рассмотрим следующий текст из документации PostgreSQL о бинарном копировании:

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 ]

4 голосов
/ 17 апреля 2009

\377 является восьмеричным - его десятичное значение равно 255. Что-то еще в формате, которое вас особенно смущало?

1 голос
/ 17 апреля 2009

По сути, вы не получите значительного ускорения при использовании двоичного формата. Он имеет различные преимущества, но более быстрая загрузка данных не является одним из них.

Просто используйте стандартные команды csv и COPY, и все будет в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...