Parametry ciągu połączenia dla Schema.ini
Tworzenie schema.ini
otwieranie lub łączenie plików tekstowych z programu Access to jedna z dwóch możliwych metod, których można używać do pracy z danymi zawartymi w plikach z programu Access. W poprzednim artykule przyjrzeliśmy się parametrom parametrów połączenia pliku tekstowego. Omówiliśmy również potrzebę posiadania dodatkowych informacji o schemacie, aby pomóc programowi Access analizować pliki tekstowe. Microsoft ma stronę o schema.ini
, ale jest kilka rzeczy, które nie są od razu jasne, więc omówimy to tutaj.
schema.ini
plik
Każdy folder może mieć jeden plik o nazwie schema.ini
gdzie możemy zdefiniować wszystkie możliwe formaty plików tekstowych, które spodziewamy się znaleźć w folderze. Dla każdego pliku tekstowego musimy rozpocząć sekcję od nazwy pliku, a następnie opisać strukturę. Zaczniemy od minimalnej sekcji próbki, a następnie przeanalizujemy każdą część. Nie jest konieczne wyliczanie wszystkich plików tekstowych. Wszelkie pliki tekstowe nie opisane przez schema.ini
będzie po prostu obsługiwany przy użyciu domyślnych ustawień na lepsze lub gorsze. Przyjrzyjmy się strukturze schema.ini
.
[products.txt] Format=CSVDelimited ColNameHeader=True MaxScanRows=0 Col1=Products Text Col2=Count Long
Zauważ, że pierwsza linia rozpoczynająca sekcję musi odnosić się do pliku tekstowego. Musi również zawierać nawiasy wskazujące początek sekcji. Jak być może już wiesz, schema.ini
może opisywać więcej niż jeden plik tekstowy, więc linia w nawiasach pomaga oddzielić schemat każdego pliku tekstowego.
Następny zestaw wierszy dotyczy ogólnego formatu pliku i sposobu, w jaki program Access powinien przetwarzać pliki tekstowe. Możemy wskazać, czy plik tekstowy ma nagłówki, ile wierszy ma zeskanować, jakiej strony kodowej użyć itd.
Ostatni zestaw linii opisuje poszczególne kolumny, ich nazwę, typ danych i szerokość.
Sprawdzimy prawidłowe opcje i możliwe wartości dla tych 2 zestawów.
Opcje opisu ogólnej struktury pliku tekstowego
Zobaczysz listę dostępnych opcji opisujących ogólny format pliku tekstowego. Typowe jest określenie co najmniej Format
i ColNameHeader
ale wszystkie możliwe treści są opcjonalne. Za każdym razem, gdy zostaną pominięte, zostaną użyte wartości domyślne, jak wskazano poniżej. Zobaczmy, jak możemy opisać format danego pliku tekstowego.
Ogólne opcje struktury
Jak już wspomniano, są one opcjonalne, choć rzadko pomijane. Niemniej jednak wartości domyślne pochodzą z kluczy rejestru aparatu tekstu. Więcej szczegółów na temat kluczy rejestru można znaleźć tutaj.
Format
:Wskazuje format plików tekstowych. Jeśli pominięty, użyj klucza rejestru silnika tekstu,Format
. Prawidłowe wartości to:TabDelimited
:Tabulatory ograniczają kolumny.CSVDelimited
:Przecinki oddzielają kolumny jak plik CSV.Delimited(*)
:Pojedynczy znak ogranicza kolumny. Może być dowolnym znakiem oprócz"
postać. Na przykład plik tekstowy oddzielony znakami|
znak powinien zgłosićFormat=Delimited(|)
.FixedLength
:Kolumny mają stałą długość; zawartość powinna być odpowiednio wyściełana. Wszystkie kolumny muszą mieć określoną szerokość.
CharacterSet
:Używa określonej strony kodowej do odczytu pliku tekstowego. Możliwe wartości toANSI
,OEM
,Unicode
lub dowolne wartości liczbowe reprezentujące żądane strony kodowe. Aby zlokalizować wszystkie możliwe strony kodowe obsługiwane na komputerze z systemem Windows, poszukaj w kluczu rejestruComputer\HKEY_CLASSES_ROOT\MIME\Database\Codepage\
. Na przykład, jeśli chcesz użyć kodowania UTF-8, możesz określićCharacterSet=65001
.ColNameHeader
:Wskazuje, czy pierwszy wiersz zawiera nazwy kolumn. W przypadku pominięcia używa klucza rejestru aparatu tekstu,FirstRowHasNames
. Wartości mogą byćTrue
lubFalse
.MaxScanRows
:Liczba wierszy Program Access powinien przeskanować plik tekstowy, aby odgadnąć możliwy typ danych. Jeśli ustawiono na 0, program Access przeskanuje cały plik. Klucz rejestru silnika tekstuMaxScanRows
jest używany, gdy jest pominięty.
Opcje lokalizacji
Opcje te dotyczą głównie lokalizacji danych zakodowanych w datach, godzinach lub walucie. Wszystkie te opcje są opcjonalne i za każdym razem, gdy zostaną pominięte, używane są ustawienia regionu Windows.
DateTimeFormat
:Format daty/czasu do użycia.DecimalSymbol
:Dowolny pojedynczy znak używany jako separator między częściami całkowitymi i ułamkowymi liczby.NumberDigits
:Liczba cyfr używanych w części ułamkowej liczby.NumberLeadingZeroes
:Wskazuje, czy w przypadku liczb większych niż -1 i mniejszych niż 1 powinno być początkowe zero. Powinno mieć wartośćTrue
lubFalse
.CurrencySymbol
:Identyfikuje symbol, który ma być interpretowany jako waluta.CurrencyPosFormat
:opisuje sposób raportowania kwot pieniężnych w pliku tekstowym. Istnieją cztery prawidłowe wartości do użycia dla tego ustawienia, reprezentowane przez cyfry od 0 do 3. Zauważ, że w przykładzie użyto$
ale w rzeczywistym użyciu użyje rzeczywistego symbolu waluty zdefiniowanego przezCurrencySymbol
lub według ustawień systemu Windows.0
:Prefiks bez spacji (np. $1)1
:przyrostek bez spacji (1$)
2
:Prefiks ze spacją pomiędzy (1 USD)3
:przyrostek ze spacją pomiędzy (1 $)
CurrencyDigits
:Liczba cyfr w części ułamkowej kwoty waluty.CurrencyNegFormat
:Wskazuje formatowanie ujemnej kwoty waluty. Jest to wartość z zakresu 0-15, jak pokazano poniżej. Zauważ, że w przykładzie użyto$
ale w rzeczywistym użyciu użyje rzeczywistego symbolu waluty zdefiniowanego przezCurrencySymbol
lub według ustawień systemu Windows.0
:(1 USD)1
:-1$2
:1 USD3
:$1-
4
:(1$)5
:-1$6
:1-$7
:1$-
8
:-1 $9
:-1 USD10
:1 $-11
:1-$
12
:-1 USD13
:1-$14
:(1 USD)15
:(1 $)
CurrencyThousandSymbol
:Pojedynczy znak wskazujący oddzielenie tysięcy w kwocie w walucie. W przypadku pominięcia używane jest ustawienie systemu Windows.CurrencyDecimalSymbol
:Pojedynczy znak wskazujący ułamek dziesiętny kwoty waluty.
Opcje definicji kolumn
Widzieliśmy, jak radzimy sobie z ogólnym formatem pliku, ale musimy podać więcej informacji o poszczególnych kolumnach. Co ważniejsze, musimy być w stanie mapować oczekiwane typy danych w kolumnach. Ergo, trzecia sekcja schema.ini
powinien opisywać każdą kolumnę z tyloma wierszami, ile jest kolumn w docelowym pliku tekstowym. Ogólny format definicji kolumny może wyglądać tak:
ColN=Name Type Width #
Należy pamiętać, że z wyjątkiem prefiksu ColN=
, wszystkie części są opcjonalne, ale to, czy można je pominąć, zależy od innych czynników, jak omówiono poniżej.
ColN=
:obowiązkowy przedrostek, który musi znajdować się na każdym początku wiersza.N
powinna być liczbą zaczynającą się od 1 i rosnącą.Name
:Nadaje nazwę kolumnie. JeśliColNameHeader
jest ustawiona naTrue
,Name
parametr można pominąć. Jeśli jednak jestFalse
, musisz podaćName
aby uniknąć błędów.Type
:Wskazuje typ danych. Jeśli zostanie pominięty, program Access użyje najlepszego odgadnięcia na podstawie zeskanowanych wierszy, zarządzanych przezMaxScanRows
opcja.type
należy ustawić na jedną z tych prawidłowych wartości. Synonimy są wymienione po kanonicznym słowie kluczowym:Bit
,Boolean
Byte
Short
,Integer
Long
Currency
Single
Double
,Float
DateTime
Text
,Char
Memo
,LongChar
Date
Width #
:Wskazuje szerokość kolumny. Jeśli jest określony, literałWidth
musi być zawarty, a następnie numer. Jeśli chcesz wskazać, że kolumna ma szerokość 50 znaków, wpisz:
Col17=ProductDescription Text Width 50
W przypadku plików o stałej szerokościWidth
jest obowiązkowe. W przypadku plików rozdzielanych możesz je pominąć. Jednak program Access użyje tych informacji dla pól tekstowych, aby ograniczyć długość i ewentualnie obciąć zawartość. W przypadku innych typów danych szerokość nie ma wpływu.
Wniosek
Widziałeś, jak możesz kontrolować schemat pliku tekstowego za pomocą schema.ini
które możesz utworzyć w folderze, w którym znajdują się pliki tekstowe. Możesz również zobaczyć, że schema.ini
zapewnia bardziej szczegółową kontrolę nad ustawieniami regionalnymi, co może być pomocne, jeśli masz do czynienia z danymi międzynarodowymi i nie możesz kontrolować waluty lub formatowania daty. W następnym artykule przyjrzymy się alternatywnej metodzie opisywania struktury pliku tekstowego za pomocą tabel systemowych Access.