На главную страницу
Форум txt.version   




Статья :: PostgreSQL Приложение В. Двоичный формат команды COPY

Приложение В. Двоичный формат команды COPY

Выходные данные команды COPY могут сохраняться не только в текстовом, но и в двоичном формате PostgreSQL. С файлами, сохраненными в двоичном формате, невозможно работать в обычных текстовых редакторах.

Заголовок

Заголовок двоичного файла PostgreSQL состоит из фиксированного набора полей общей длиной 24 байта и расширенного заголовка переменной длины. Ниже перечислены фиксированные поля заголовка.

  • Сигнатура. 12-байтовая последовательность символов PGBCOPY\n\377\r\n\0. Сигнатура используется для идентификации файлов, искаженных при пересылке. Она изменяется при потере значений NULL, нарушении контроля четности, воздействии фильтров преобразования новой строки и потере старших битов.
  • Определитель порядка байтов. 4-байтовая целочисленная константа (0x01020304), при помощи которой предотвращается перестановка байтов в процессе чтения двоичных файлов.
  • Флаги. 4-байтовое целое число, содержащее информацию о формате файла. Поле состоит из набора флагов, а его биты нумеруются с 0 (младший бит) до 31 (старший бит). Для сохранения совместимости биты 0-15 зарезервированы, а в битах 16-31 хранятся флаги. В PostgreSQL 7.1.x определен только бит 16:
    • если бит 16 равен 1, в файле сохраняются идентификаторы объектов; о если бит 16 равен 0, идентификаторы объектов в файл не включаются.
  • Поле длины расширенного заголовка. 4-битовое целое поле, содержащее длину оставшейся части заголовка в байтах (без учета длины самого поля). В предыдущих версиях это поле было равно 0, и за ним непосредственно следовали данные первой записи.

Записи

Записи в двоичном файле начинаются с 16-разрядного целого количества полей (одинакового для каждой записи). Затем следует 16-разрядное целое поле typlen, после чего - поля данных. Допустимые значения поля typlen перечислены ниже.

  • 0. NULL; поле не содержит данных.
  • >0. Тип данных фиксированной длины. За словом typlen следует указанное количество байтов данных.
  • -1. Тип данных varlena. Следующие четыре байта составляют заголовок varlena, определяющий общую длину значения (вместе с длиной заголовка).
  • <-1. Зарезервировано для использования в будущем.

Чтобы приложение, читающее этот формат, могло легко проверить целостность двоичных данных, со всеми полями, отличными от NULL, ассоциируется значение typlen, которое может сравниваться с полем typlen приемного поля перед попытками вставки или обновления данных в PostgreSQL.

Некоторые параметры форматирования остались нереализованными; такое решение было принято для лучшей переносимости двоичных файлов. Следует упомянуть о невозможности хранения дополнительных данных между полями (например, посредством дополнения при выравнивании), а также об отсутствии различий между типами данных по способу передачи (по ссылке и по значению).

Если в двоичный файл PostgreSQL включаются идентификаторы объектов (OID), они следуют сразу же после поля-счетчика. При подсчете полей значения OID не учитываются.

Завершение

Двоичные файлы PostgreSQL завершаются простым 16-разрядным целым числом -1, за которым следует конец файла. Значение легко отличается от начального 16-разрядного счетчика полей, и это обстоятельство упрощает синхронизацию данных в приложениях.



PostgreSQL Приложение В. Двоичный формат команды COPY

страницы в данном разделе 
 PostgreSQL Приложения  PostgreSQL Приложение А. Типы расширенных кодировок
 PostgreSQL Приложение Б. Ключи командной строки postgres  PostgreSQL Приложение В. Двоичный формат команды COPY
 PostgreSQL Приложение Г. Внутренние переменные psql   


Разделы
Околокомпьютерная литература (375)
Программирование (102)
Программы (75)
ОС и Сети (49)
Интернет (29)
Аппаратное обеспечение (16)
Базы данных (6)
Flutter
React Native
Xamarin

Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)

PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C





 
©  programming-lang.com  справочник программиста
©  http://ekb.programming-lang.com/tlg/  бесплатный телеграм бот
©  http://ekb.programming-lang.com/tlg/  бесплатный телеграм бот
React Native
demo forum