Spec-Zone.ru › MariaDB

Тип таблицы DBF CONNECT

Обзор

Таблица типа DBF физически представляет собой файл формата dBASE III или IV (используется многими продуктами, такими как dBASE, Xbase, FoxPro и т. д.). Этот формат похож на формат типа FIX с добавлением префикса, определяющего характеристики файла, в частности, описывающего все поля (столбцы) таблицы.

Поскольку файлы DBF имеют заголовок, содержащий метаданные о файле, в частности, описание столбцов, можно создать таблицу на основе существующего файла DBF без указания описания столбцов, например:

create table cust engine=CONNECT table_type=DBF file_name='cust.dbf';

Чтобы увидеть, что сделало CONNECT, можно использовать команды DESCRIBE или SHOW CREATE TABLE, а затем изменить некоторые параметры с помощью команды ALTER TABLE.

Случай удалённых строк обрабатывается для таблиц DBF особым образом. Удалённые строки не удаляются из файла, а «мягко удаляются», то есть помечаются как удалённые. В частности, количество строк, содержащихся в заголовке файла, не учитывает мягко удалённые строки. Вот почему, если выполнить эти две команды, применённые к таблице DBF с именем tabdbf:

select count(*) from tabdbf;
select count(*) from tabdbf where 1;

Они могут дать разный результат, при этом первая (быстрая) команда даст количество физических строк в файле, а вторая — количество строк, которые не являются (мягко) удалёнными.

Команды UPDATE, INSERT и DELETE можно использовать с таблицами DBF. Команда DELETE помечает удалённые строки как удалённые, но сохраняет их в файле. Команда INSERT, если она используется для заполнения вновь созданной таблицы, строит заголовок файла перед вставкой новых строк.

Примечание: для таблиц DBF длина имени столбца ограничена 11 символами, а длина поля — 256 байтами.

Преобразование типов данных dBASE

CONNECT обрабатывает только типы, которые хранятся как символы.

Символ Тип DBF Тип CONNECT Описание
B Двоичный (строковый) TYPE_STRING 10 цифр, представляющие номер блока .DBT.
C Символьный TYPE_STRING Все символы кодовой страницы OEM — заполняются пробелами до ширины поля.
D Дата TYPE_DATE 8 байт — дата хранится как строка в формате ГГГГММДД.
N Числовой TYPE_INT TYPE_BIGINT TYPE_DOUBLE Число хранится как строка, выровнено по правому краю и дополнено пробелами до ширины поля.
L Логический TYPE_STRING 1 байт — инициализирован до 0x20, в противном случае T или F.
M Мемо (строковый) TYPE_STRING 10 цифр, представляющие номер блока .DBT.
@ Отметка времени Не поддерживается 8 байт — два целых числа, первое для даты, второе для времени. Это число дней с 01.01.4713 до н. э.
I Длинный Не поддерживается 4 байта. Самый левый бит используется для указания знака, 0 отрицательный.
+ Автоинкремент Не поддерживается То же, что и Длинный
F Вещественный TYPE_DOUBLE Число хранится как строка, выровнено по правому краю и дополнено пробелами до ширины поля.
O Двойной Не поддерживается 8 байт — преобразования не производятся, хранится как double.
G OLE TYPE_STRING 10 цифр, представляющие номер блока .DBT.

Для числового типа N CONNECT преобразует его в TYPE_DOUBLE, если значение десятичных знаков не равно 0, в TYPE_BIGINT, если значение длины больше 10, в противном случае в TYPE_INT.

Для типов M, B и G CONNECT просто возвращает номер DBT.

Чтение мягко удалённых строк таблицы DBF

Эти строки можно читать, изменив режим чтения таблицы. Это определяется параметром READMODE, который может принимать значения:

0 Стандартный режим. Это значение по умолчанию.
1 Чтение всех строк, включая мягко удалённые.
2 Чтение только мягко удалённых строк.

Например, чтобы прочитать все строки таблицы tabdbf, можно сделать следующее:

alter table tabdbf option_list='Readmode=1';

Чтобы вернуться к обычному режиму, укажите READMODE=0.

Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не предварительно проверяется MariaDB. Мнения, информация и мнения, выраженные в этом содержимом, не обязательно отражают взгляды MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/connect-dbf-table-type/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API