Формат текстового файла (драйвер текстового файла)

Драйвер текста ODBC поддерживает как текстовые файлы с разделителями, так и текстовыми файлами фиксированной ширины. Текстовый файл состоит из необязательной строки заголовка и нуля или нескольких текстовых строк.

Хотя строка заголовка использует тот же формат, что и другие строки в текстовом файле, драйвер ODBC Text интерпретирует записи строки заголовка как имена столбцов, а не данные.

Текстовая строка с разделителями содержит одно или несколько значений данных, разделенных разделителями: запятыми, вкладками или пользовательским разделителем. Один и тот же разделитель должен использоваться во всем файле. Значения данных NULL указываются двумя разделителями в строке без данных между ними. Строки символов в текстовой строке с разделителями могут быть заключены в двойные кавычки (""). Пустые значения не могут возникать до или после значений с разделителями.

Ширина каждой записи данных в строке текста фиксированной ширины указывается в схеме. Значения данных NULL указываются пустыми.

Таблицы ограничены максимум 255 полями. Имена полей ограничены 64 символами, а ширина поля ограничена 32 766 символами. Записи ограничены 65 000 байтами.

Текстовый файл можно открыть только для одного пользователя. Несколько пользователей не поддерживаются.

Следующая грамматика, написанная для программистов, определяет формат текстового файла, который можно считывать драйвером текста ODBC:

Формат Представление
Не курсив Символы, которые необходимо ввести, как показано
курсив Аргументы, определенные в другом месте грамматики
квадратные скобки ([]) Необязательные элементы
фигурные скобки ({}) Список взаимоисключающих вариантов
вертикальные полосы (|) Отдельные взаимоисключающие варианты
многоточие (...) Элементы, которые могут повторяться один или несколько раз

Формат текстового файла:

text-file ::=  
   [delimited-header-line] [delimited-text-line]... end-of-file |  
   [fixed-width-header-line] [fixed-width-text-line]... end-of-file  
delimited-header-line ::= delimited-text-line  
delimited-text-line ::=  
   blank-line |  
   delimited-data [delimiter delimited-data]... end-of-line  
fixed-width-header-line ::= fixed-width-text-line  
fixed-width-text-line ::=  
   blank-line |  
   fixed-width-data [fixed-width-data]... end-of-line  
end-of-file ::= <EOF>  
blank-line ::= end-of-line  
delimited-data ::= delimited-string | number | date | delimited-null  
fixed-width-data ::= fixed-width-string | number | date | fixed-width-null  

Замечание

Ширина каждого столбца в текстовом файле фиксированной ширины указывается в файле Schema.ini.

  
      end-of-line ::= <CR> | <LF> | <CR><LF>  
delimited-string ::= unquoted-string | quoted-stringunquoted-string ::= [character | digit] [character | digit | quote-character]...  
quoted-string ::=  
   quote-character  
   [character | digit | delimiter | end-of-line | embedded-quoted-string]...  
   quote-characterembedded-quoted-string ::=   quote-characterquote-character  
   [character | digit | delimiter | end-of-line]  
   quote-characterquote-characterfixed-width-string ::= [character | digit | delimiter | quote-character] ...  
character ::= any character except:  
   delimiterdigitend-of-fileend-of-linequote-characterdigit ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9  
delimiter ::= , | <TAB> |   
custom-delimitercustom-delimiter ::= any character except:  
   end-of-fileend-of-linequote-character  

Замечание

Разделитель в текстовом файле с пользовательскими разделителями указывается в файле Schema.ini.

quote-character ::= "  
number ::= exact-number | approximate-number  
exact-number ::= [+ | -] {unsigned-integer[.unsigned-integer] |  
   unsigned-integer. |  
   .unsigned-integer}  
approximate-number ::= exact-number{e | E}[+ | -]unsigned-integer  
unsigned-integer ::= {digit}...  
date ::=  
   mm date-separator dd date-separator yy |  
   mmm date-separator dd date-separator yy |  
   dd date-separator mmm date-separator yy |  
   yyyy date-separator mm date-separator dd |  
   yyyy date-separator mmm date-separator dd  
mm ::= digit [digit]  
dd ::= digit [digit]  
yy ::= digit digit  
yyyy ::= digit digit digit digit  
mmm ::= Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec  
date-separator ::= - | / | .  
delimited-null ::=  

Замечание

Для файлов с разделителями значение NULL не представлено данными между двумя разделителями.

fixed-width-null ::= <SPACE>...  

Замечание

Для файлов фиксированной ширины значение NULL представлено пробелами.