sql >> Database teknologi >  >> RDS >> Access

Forbindelsesstrengparametre for Schema.ini

Forbindelsesstrengparametre for Schema.ini

At lave et schema.ini at åbne eller linke tekstfiler fra Access er en af ​​to mulige metoder, der kan bruges til at arbejde med data indeholdt i filerne fra Access. I den forrige artikel så vi på tekstfilens forbindelsesstrengparametre. Vi diskuterede også behovet for at have yderligere skemaoplysninger for at hjælpe Access med at analysere tekstfilerne. Microsoft har en side om schema.ini , men der er få ting, der ikke umiddelbart er klare, så vi vil dække det her.

schema.ini fil

Hver mappe kan have en enkelt fil med navnet schema.ini for hvor vi kan definere alle mulige formater af tekstfiler, vi forventer at finde i mappen. For hver tekstfil skal vi starte et afsnit med filnavnet og derefter beskrive strukturen. Vi starter med en minimal prøvesektion og analyserer derefter hver del. Det er ikke nødvendigt at opregne alle tekstfiler. Alle tekstfiler, der ikke er beskrevet af schema.ini vil simpelthen blive håndteret ved at bruge standardindstillingen på godt og ondt. Lad os se på strukturen af ​​schema.ini .

[products.txt]

Format=CSVDelimited
ColNameHeader=True
MaxScanRows=0

Col1=Products Text
Col2=Count Long

Bemærk, at den første linje, der starter et afsnit, skal referere til en tekstfil. Den skal også have parenteser for at angive starten på sektionen. Som du måske allerede ved, er en schema.ini kan beskrive mere end én tekstfil, så linjen med parentes hjælper med at holde hver tekstfils skema adskilt.

Det næste sæt linjer omhandler filens overordnede format, og hvordan Access skal behandle tekstfilerne. Vi kan angive, om en tekstfil har overskrifter, hvor mange rækker der skal scannes, hvilken tegntabel der skal bruges og så videre.

Det sidste sæt linjer beskriver de enkelte kolonner, deres navn, datatype og bredde.

Vi vil gennemgå de gyldige muligheder og mulige værdier for disse 2 sæt.

Muligheder for at beskrive den overordnede tekstfils struktur

Du vil se en liste over gyldige muligheder for at beskrive tekstfilens overordnede format. Det er typisk at specificere som minimum Format og ColNameHeader men alt muligt indhold er valgfrit. Når de udelades, vil standardværdierne blive brugt som angivet nedenfor. Lad os se, hvordan vi kan beskrive en given tekstfils format.

Overordnede strukturmuligheder

Som nævnt er disse valgfrie, men sjældent udeladt. Ikke desto mindre kommer standardindstillingerne fra tekstmotorens registreringsnøgler. Flere detaljer om registreringsdatabasenøglerne kan findes her.

  • Format :Angiver formatet på tekstfilerne. Hvis den udelades, bruger registreringsnøglen til tekstmotoren, Format . Gyldige værdier er:
    • TabDelimited :Faneblade afgrænser kolonnerne.
    • CSVDelimited :Kommaer afgrænser kolonnerne som en CSV-fil.
    • Delimited(*) :Et enkelt tegn afgrænser kolonnerne. Kan være et hvilket som helst tegn undtagen " Karakter. For eksempel en tekstfil afgrænset med | karakter skal rapportere Format=Delimited(|) .
    • FixedLength :Søjlerne har fast længde; indholdet skal polstres i overensstemmelse hermed. Alle kolonner skal have en defineret bredde.

  • CharacterSet :Bruger en bestemt tegntabel til at læse tekstfilen. Mulige værdier kan være ANSI , OEM , Unicode eller eventuelle numeriske værdier, der repræsenterer de ønskede tegntabel. For at finde alle mulige tegntabeller, der understøttes på din Windows-maskine, skal du kigge i registreringsdatabasenøglen Computer\HKEY_CLASSES_ROOT\MIME\Database\Codepage\ . For eksempel, hvis du vil bruge utf-8-kodning, kan du angive CharacterSet=65001 .
  • ColNameHeader :Angiver om den første linje indeholder kolonnenavnene. Når den udelades, bruger registreringsnøglen for tekstmotoren, FirstRowHasNames . Værdier kan enten være True eller False .
  • MaxScanRows :Antal rækker Access skal scanne en tekstfil ind for at gætte den mulige datatype. Hvis indstillet til 0, vil Access scanne hele filen. Tekstmotorens registreringsnøgle MaxScanRows bruges, når den udelades.

Lokaliseringsmuligheder

Disse muligheder omhandler hovedsageligt lokalisering af data indkodet i datoer, klokkeslæt eller valuta. Alle disse muligheder er valgfrie, og når de udelades, bruges Windows' regionsindstillinger.

  • DateTimeFormat :Dato/tidsformatet, der skal bruges.
  • DecimalSymbol :Ethvert enkelt tegn, der bruges som separator mellem integral- og brøkdele af et tal.
  • NumberDigits :Antal cifre brugt i brøkdelen af ​​et tal.
  • NumberLeadingZeroes :Angiver, om der skal være et indledende nul for tal mere end -1 og mindre end 1. Skal enten være True eller False .
  • CurrencySymbol :Identificerer symbolet, der skal fortolkes som en valuta.
  • CurrencyPosFormat :Beskriver, hvordan pengebeløb skal indberettes i tekstfilen. Der er fire gyldige værdier at bruge for denne indstilling repræsenteret ved tallet 0 til 3. Bemærk, at eksemplet bruger $ men i faktisk brug vil den bruge det faktiske valutasymbol defineret af CurrencySymbol eller efter Windows' indstilling.
    • 0 :Præfiks uden mellemrum (f.eks. $1)
    • 1 :Suffiks uden mellemrum (1$)
    • 2 :Præfiks med et mellemrum imellem ($ 1)
    • 3 :Suffiks med et mellemrum imellem (1 $)

  • CurrencyDigits :Antal cifre i en brøkdel af et valutabeløb.
  • CurrencyNegFormat :Angiver formateringen af ​​et negativt valutabeløb. Det er en værdi mellem 0-15 som vist nedenfor. Bemærk, at eksemplet bruger $ men i faktisk brug vil den bruge det faktiske valutasymbol defineret af CurrencySymbol eller efter Windows' indstilling.
    • 0 :($1)
    • 1 :-$1
    • 2 :$-1
    • 3 :$1-
    • 4 :(1$)
    • 5 :-$1
    • 6 :1-$
    • 7 :1$-
    • 8 :-1 $
    • 9 :-$ 1
    • 10 :1 $-
    • 11 :$ 1-
    • 12 :$ -1
    • 13 :1- $
    • 14 :($1)
    • 15 :(1 $)

  • CurrencyThousandSymbol :Et enkelt tegn for at angive adskillelse af tusinder i et valutabeløb. Hvis den udelades, bruges Windows-indstillingen.
  • CurrencyDecimalSymbol :Et enkelt tegn til at angive decimalen for et valutabeløb.

Indstillinger for kolonnedefinition

Vi så, hvordan vi kan håndtere det overordnede format af filen, men vi er nødt til at give flere oplysninger om den enkelte kolonne. Endnu vigtigere er det, at vi skal være i stand til at kortlægge de forventede datatyper af kolonner. Ergo, den tredje sektion af schema.ini skal beskrive hver kolonne med lige så mange rækker, som der er kolonner i måltekstfilen. Det generelle format for kolonnedefinitionen kan se sådan ud:

ColN=Name Type Width #

Det er vigtigt at bemærke, at bortset fra præfikset ColN= , alle delene er valgfri, men om du kan udelade det, afhænger af andre faktorer som diskuteret nedenfor.

  • ColN= :Et obligatorisk præfiks, der skal være på hver start af linjen. N skal være et tal, der starter ved 1 og stigende.
  • Name :Giver en kolonne navnet. Hvis ColNameHeader er indstillet til True , Name parameter kan udelades. Men hvis det er False , så skal du angive Name for at undgå fejl.
  • Type :Angiver datatypen. Hvis den udelades, vil Access bruge sit bedste gæt baseret på de scannede rækker, styret af MaxScanRows mulighed. type skal indstilles til en af ​​disse gyldige værdier. Synonymer er anført efter det kanoniske søgeord:
    • Bit , Boolean
    • Byte
    • Short , Integer
    • Long
    • Currency
    • Single
    • Double , Float
    • DateTime
    • Text , Char
    • Memo , LongChar
    • Date

  • Width # :Angiver kolonnens bredde. Hvis dette er angivet, er den bogstavelige Width skal medtages og derefter efterfølges af et tal. Hvis du vil angive, at en kolonne er 50 tegn bred, skal du skrive:
    Col17=ProductDescription Text Width 50
    For filer med fast bredde er Width er obligatorisk. Med afgrænsede filer kan du udelade det. Access vil dog bruge disse oplysninger til tekstfelter for at begrænse længden og muligvis afkorte indholdet. For andre datatyper har bredden ingen effekt.

Konklusion

Du har set, hvordan du kan styre en tekstfils skema ved hjælp af en schema.ini som du kan oprette i en mappe, hvor tekstfilen(erne) ligger. Du kan også se, at schema.ini giver dig mere detaljeret kontrol over regionale indstillinger, hvilket kan være nyttigt, hvis du har med internationale data at gøre, og du ikke kan kontrollere valuta- eller datoformateringen. I den næste artikel vil du se på den alternative metode til at beskrive tekstfilens struktur ved hjælp af Access' systemtabeller.


  1. Sådan fungerer AUTOINCREMENT i SQLite

  2. TNS-12505:TNS:listener kender i øjeblikket ikke til SID givet i forbindelsesbeskrivelsen

  3. Sådan bygger du en Rest API med Spring Boot ved hjælp af MySQL og JPA

  4. Hvordan vi bruger databaser i vores hverdag