Рассмотрим следующий текст из документации PostgreSQL при двоичном копировании:
11-байтовая последовательность PGCOPY\n\377\r\n\0 - обратите внимание, что нулевой байт является обязательным часть подписи. (Подпись предназначена для идентификация файлов, которые были замачивается не-8-битным чистым переносом. Эта подпись будет изменена фильтры перевода конца строки, сбросил нулевые байты, сбросил высокие бит, или изменения четности.)
Я могу создать остальную часть заголовка ok, но что подразумевается под \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's?
Если кто-то может помочь с остальной частью формата, это будет оценено. Я мог обмануть и использовать копию базы данных CVS, но с количеством строк, которые мне нужно скопировать (в миллионах), я понимаю, что бинарный формат будет иметь много преимуществ по скорости по сравнению с CVS.
\377
- восьмеричное значение - его десятичное значение - 255. Было ли что-то еще в том формате, который вас специально смутил?
В основном вы не получите значительного ускорения, используя двоичный формат. Он имеет разные преимущества, но загрузка данных быстрее не является одним из них.
Просто используйте стандартные команды csv и COPY, и вы должны быть в порядке.