Spec-Zone.ru › MariaDB

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

Обзор

Тип INI — это один из файлов конфигурации или инициализации, часто встречающийся в системах Windows. Например, предположим, что у вас есть следующий файл контактов contact.ini:

[BER]
name=Bertrand
forename=Olivier
address=21 rue Ferdinand Buisson
city=Issy-les-Mlx
zipcode=92130
tel=09.54.36.29.60
cell=06.70.06.04.16

[WEL]
name=Schmitt
forename=Bernard
hired=19/02/1985
address=64 tiergarten strasse
city=Berlin
zipcode=95013
tel=03.43.377.360

[UK1]
name=Smith
forename=Henry
hired=08/11/2003
address=143 Blum Rd.
city=London
zipcode=NW1 2BP

CONNECT позволяет просматривать его как таблицу двумя различными способами.

Макет столбцов

Первый способ — рассматривать его как таблицу с одной строкой на раздел, столбцами которых являются ключи, которые вы хотите отобразить. В этом случае оператор CREATE может быть следующим:

create table contact (
  contact char(16) flag=1,
  name char(20),
  forename char(32),
  hired date date_format='DD/MM/YYYY',
  address char(64),
  city char(20),
  zipcode char(8),
  tel char(16))
engine=CONNECT table_type=INI file_name='contact.ini';

Столбец, который будет содержать имя раздела, может иметь любое имя, но должен указать flag=1. Все остальные столбцы должны иметь имена ключей, которые мы хотим отобразить (регистр не учитывается). Тип может быть символьным или числовым, в зависимости от типа значения ключа, а длина — это максимальная ожидаемая длина значения ключа. После этого оператор:

select contact, name, hired, city, tel from contact;

Этот оператор отобразит файл в табличном формате.

contact name hired city tel
BER Bertrand 1970-01-01 Issy-les-Mlx 09.54.36.29.60
WEL Schmitt 1985-02-19 Berlin 03.43.377.360
UK1 Smith 2003-11-08 London NULL

Видимы только ключи, определенные в операторах создания; ключи, отсутствующие в разделе, отображаются как нулевые или псевдонулевые (пустые для символьных, 01.01.1970 для дат и 0 для числовых) для столбцов, объявленных NOT NULL.

Ко всем реляционным операциям к этой таблице можно применять все реляционные операции. Таблица (и файл) могут быть обновлены, вставлены и условно удалены. Единственное ограничение состоит в том, что при вставке значений имя раздела должно быть первым в списке значений.

Примечание 1: При вставке, если раздел уже существует, новый раздел не будет создан, а новые значения будут добавлены или заменят значения существующего раздела. Таким образом, следующие две команды эквивалентны:

update contact set forename = 'Harry' where contact = 'UK1';
insert into contact (contact,forename) values('UK1','Harry');

Примечание 2: Поскольку разделы представляют собой одну строку, оператор DELETE для ключа раздела удалит весь раздел.

Макет строк

Для того, чтобы файл INI был хорошим кандидатом для табличного представления, в каждом разделе часто должны присутствовать одни и те же ключи. На практике многие файлы, которые часто встречаются в компьютерах, такие как файл win.ini в каталоге Windows или файл my.ini, не могут отображаться таким образом, потому что каждый раздел имеет разные ключи. В этом случае второй способ — рассматривать файл как таблицу, имеющую одну строку на ключ раздела, столбцами которой могут быть имя раздела, имя ключа и значение ключа.

Например, давайте определим таблицу:

create table xcont (
  section char(16) flag=1,
  keyname char(16) flag=2,
  value char(32))
engine=CONNECT table_type=INI file_name='contact.ini'
option_list='Layout=Row';

В этом операторе опция «Макет» устанавливает формат отображения, по умолчанию «Столбец» или любое другое значение, не начинающееся с «С», для отображения макета строки. Имена трех столбцов могут быть выбраны произвольно. Опция «Флаг» указывает смысл столбца. Укажите flag=1 для имени раздела и flag=2 для имени ключа. В противном случае столбец будет содержать значение ключа.

После этого команда:

select * from xcont;

Выведет следующий результат:

section keyname value
BER name Bertrand
BER forename Olivier
BER address 21 rue Ferdinand Buisson
BER city Issy-les-Mlx
BER zipcode 92130
BER tel 09.54.36.29.60
BER cell 06.70.06.04.16
WEL name Schmitt
WEL forename Bernard
WEL hired 19/02/1985
WEL address 64 tiergarten strasse
WEL city Berlin
WEL zipcode 95013
WEL tel 03.43.377.360
UK1 name Smith
UK1 forename Henry
UK1 hired 08/11/2003
UK1 address 143 Blum Rd.
UK1 city London
UK1 zipcode NW1 2BP

Примечание: При обработке таблицы INI все имена разделов извлекаются в буфер размером 8 КБ (2048 байтов до версии 10.0.17). Для больших файлов с множеством разделов этот размер можно увеличить, например:

option_list='seclen=16K';
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проверяется предварительно компанией 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-ini-table-type/

Spec-Zone.ru

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