Параметри на низ за връзка за Schema.ini
Създаване на schema.ini
отварянето или свързването на текстови файлове от Access е един от двата възможни метода, които могат да се използват за работа с данни, съдържащи се във файловете от Access. В предишната статия разгледахме параметрите на низа за връзка на текстовия файл. Обсъдихме също необходимостта от допълнителна информация за схемата, за да помогнем на Access да анализира текстовите файлове. Microsoft има страница за schema.ini
, но има няколко неща, които не са ясни веднага, така че ще ги разгледаме тук.
schema.ini
файл
Всяка папка може да има един файл с име schema.ini
за където можем да дефинираме всички възможни формати на текстови файлове, които очакваме да намерим в папката. За всеки текстов файл трябва да започнем раздел с името на файла и след това да опишем структурата. Ще започнем с минимален раздел на пробата, след което анализираме всяка част. Не е необходимо да се изброяват всички текстови файлове. Всички текстови файлове, които не са описани от schema.ini
ще се обработва просто с помощта на настройките по подразбиране за добро или лошо. Нека разгледаме структурата на schema.ini
.
[products.txt] Format=CSVDelimited ColNameHeader=True MaxScanRows=0 Col1=Products Text Col2=Count Long
Имайте предвид, че първият ред за започване на раздел трябва да препраща към текстов файл. Освен това трябва да има скоби, за да посочи началото на раздел. Както може би вече знаете, schema.ini
може да опише повече от един текстови файлове, така че линията в скоби помага да се запази схемата на всеки текстов файл отделна.
Следващият набор от редове се занимава с цялостния формат на файла и как Access трябва да обработва текстовите файлове. Можем да посочим дали даден текстов файл има заглавки, колко реда да се сканира, каква кодова страница да се използва и т.н.
Последният набор от редове описва отделните колони, тяхното име, тип данни и ширина.
Ще прегледаме валидните опции и възможните стойности за тези 2 комплекта.
Опции за описание на цялостната структура на текстовия файл
Ще видите списък с валидни опции за описание на цялостния формат на текстовия файл. Типично е да се посочи най-малко Format
и ColNameHeader
но цялото възможно съдържание е по избор. Всеки път, когато са пропуснати, стойностите по подразбиране ще се използват, както е посочено по-долу. Нека да разгледаме как можем да опишем формата на даден текстов файл.
Общи опции за структура
Както бе отбелязано, те са незадължителни, но рядко се пропускат. Независимо от това, настройките по подразбиране идват от ключовете на системния регистър на Text Engine. Повече подробности за ключовете на системния регистър можете да намерите тук.
Format
:Показва формата на текстовите файлове. Ако е пропуснато, използва регистрационния ключ на Text Engine,Format
. Валидни стойности са:TabDelimited
:Табулатори ограничават колоните.CSVDelimited
:Запетаи разделят колоните като CSV файл.Delimited(*)
:Един знак ограничава колоните. Може да бъде всеки знак с изключение на"
характер. Например текстов файл, разделен с|
символът трябва да докладваFormat=Delimited(|)
.FixedLength
:Колоните са с фиксирана дължина; съдържанието трябва да бъде съответно подплатено. Всички колони трябва да имат дефинирана ширина.
CharacterSet
:Използва специфична кодова страница за четене на текстовия файл. Възможните стойности могат да бъдатANSI
,OEM
,Unicode
или всякакви числови стойности, представляващи желаните кодови страници. За да намерите всички възможни кодови страници, поддържани на вашата машина с Windows, погледнете в ключа на системния регистърComputer\HKEY_CLASSES_ROOT\MIME\Database\Codepage\
. Например, ако искате да използвате utf-8 кодиране, можете да посочитеCharacterSet=65001
.ColNameHeader
:Показва дали първият ред съдържа имената на колоните. Когато е пропуснато, използва ключа на системния регистър на Text Engine,FirstRowHasNames
. Стойностите могат да бъдат илиTrue
илиFalse
.MaxScanRows
:Брой редове Access трябва да сканира в текстов файл, за да отгатне възможния тип данни. Ако е зададено на 0, Access ще сканира целия файл. Регистрационният ключ на текстовата машинаMaxScanRows
се използва, когато е пропуснато.
Опции за локализация
Тези опции се занимават основно с локализиране на данните, кодирани в дати, часове или валута. Всички тези опции не са задължителни и винаги, когато са пропуснати, се използват настройките за регион на Windows.
DateTimeFormat
:Форматът за дата/час, който да се използва.DecimalSymbol
:Всеки единичен знак, използван като разделител между интегрални и дробни части на число.NumberDigits
:Брой цифри, използвани в дробната част на число.NumberLeadingZeroes
:Показва дали трябва да има водеща нула за числа по-големи от -1 и по-малко от 1. Трябва да е илиTrue
илиFalse
.CurrencySymbol
:Идентифицира символа, който трябва да се интерпретира като валута.CurrencyPosFormat
:Описва как трябва да се отчитат паричните суми в текстовия файл. Има четири валидни стойности, които да се използват за тази настройка, представени с числа от 0 до 3. Обърнете внимание, че примерът използва$
но при реална употреба, той ще използва действителния символ на валута, дефиниран отCurrencySymbol
или чрез настройката на Windows.0
:Префикс без интервал (напр. $1)1
:Суфикс без интервал (1$)
2
:Префикс с интервал между тях ($ 1)3
:Суфикс с интервал между (1 $)
CurrencyDigits
:Брой цифри в дробна част от валутната сума.CurrencyNegFormat
:Показва форматирането на отрицателна валутна сума. Това е стойност между 0-15, както е показано по-долу. Обърнете внимание, че примерът използва$
но при реална употреба, той ще използва действителния символ на валута, дефиниран отCurrencySymbol
или чрез настройката на Windows.0
:($1)1
:-$12
:$-13
:$1-
4
:(1$)5
:-$16
:1-$7
:1$-
8
:-1 $9
:-$110
:1 $-11
:$1-
12
:$ -113
:1- $14
:($1)15
:(1 $)
CurrencyThousandSymbol
:Единичен знак за обозначаване на разделяне на хиляди във валутна сума. Ако се пропусне, се използва настройката на Windows.CurrencyDecimalSymbol
:Един знак за обозначаване на десетичната запетая на сума във валута.
Опции за дефиниране на колони
Видяхме как можем да се справим с цялостния формат на файла, но трябва да дадем повече информация за отделната колона. По-важното е, че трябва да можем да картографираме очакваните типове данни на колони. Следователно, третият раздел на schema.ini
трябва да описва всяка колона с толкова редове, колкото има колони в целевия текстов файл. Общият формат за дефиницията на колоната може да изглежда така:
ColN=Name Type Width #
Важно е да се отбележи, че с изключение на префикса ColN=
, всички части са по избор, но дали можете да пропуснете, зависи от други фактори, както е обсъдено по-долу.
ColN=
:Задължителен префикс, който трябва да бъде във всяко начало на реда.N
трябва да е число, започващо от 1 и нарастващо.Name
:Дава името на колона. АкоColNameHeader
е настроен наTrue
,Name
параметърът може да бъде пропуснат. Ако обаче еFalse
, тогава трябва да посочитеName
за да избегнете грешки.Type
:Показва типа данни. Ако се пропусне, Access ще използва най-доброто си предположение въз основа на сканираните редове, управлявано отMaxScanRows
опция.type
трябва да бъде настроена на една от тези валидни стойности. Синонимите са изброени след каноничната ключова дума:Bit
,Boolean
Byte
Short
,Integer
Long
Currency
Single
Double
,Float
DateTime
Text
,Char
Memo
,LongChar
Date
Width #
:Показва ширината на колоната. Ако това е посочено, литералътWidth
трябва да бъдат включени и след това последвани от число. Ако искате да посочите, че колона е широка 50 знака, трябва да напишете:
Col17=ProductDescription Text Width 50
За файлове с фиксирана ширина,Width
е задължително. При файлове с разделители можете да го пропуснете. Въпреки това Access ще използва тази информация за текстови полета, за да ограничи дължината и евентуално да съкрати съдържанието. За други типове данни ширината няма ефект.
Заключение
Видяхте как можете да контролирате схемата на текстов файл с помощта на schema.ini
които можете да създадете в папка, където се намират текстовите файлове. Можете също да видите, че schema.ini
ви дава по-подробен контрол върху регионалните настройки, което може да е полезно, ако работите с международни данни и не можете да контролирате валутата или форматирането на датата. В следващата статия ще разгледате алтернативния метод за описание на структурата на текстовия файл с помощта на системните таблици на Access.