sql >> Databáze >  >> RDS >> Access

Parametry připojovacího řetězce pro uložené specifikace

Parametry připojovacího řetězce pro uložené specifikace

Access poskytuje druhou metodu popisu schématu textových souborů pomocí systémových tabulek MSysIMEXSpecs a MSysIMEXColumns pro uložení specifikací. V předchozím článku jsem popsal, jak schema.ini lze použít k popisu struktury textového souboru. Soubor schema.ini zahrnoval externí textový soubor, na který se implicitně odkazuje, ale se systémovými tabulkami nemáme žádné externí závislosti. Struktura je poměrně odlišná, i když existují určité překrývání.

MSysIMEXSpecs a MSysIMEXColumns systémová tabulka

Namísto spoléhání se na to, že externí schema.ini bude přítomen ve stejné složce jako textový soubor, je možné poskytnout specifikace pro textový soubor v libovolné cestě odkazem na uloženou specifikaci v databázi Accessu. Když použijete průvodce importem nebo exportem, můžete uložit nebo načíst specifikace pomocí Advanced tlačítko.

Kliknutím na tlačítko Upřesnit se zobrazí dialogové okno se specifikacemi. Kromě načítání nebo ukládání specifikací můžete specifikace také přizpůsobit pomocí zobrazeného dialogu.

Kdykoli je specifikace uložena, je zapsána do obou MSysIMEXSpecs a MSysIMEXColumns systémové tabulky. Tabulky v nových souborech Accessu neexistují a budou vytvořeny pouze poprvé. Kromě toho můžete upravovat nebo dokonce mazat data z těchto tabulek. Přesto se stále jedná o systémové tabulky, takže jsou ve výchozím nastavení skryté. Pokud je chcete vidět v navigačním panelu, budete muset přejít do Možnosti navigace a povolit viditelnost pro skryté i systémové objekty.

Pokud porovnáte dostupné možnosti v dialogovém okně s možnostmi, které máte v schema.ini , můžete vidět některé výrazné rozdíly. Například schema.ini umožňuje více možností s ohledem na to, jak mohou být formátována data nebo částky v měně. S uloženými specifikacemi můžeme řídit formátování data pouze z přednastaveného seznamu možných formátů. Neexistují žádné přímé možnosti pro částky v měně, protože používáme typ dat k označení, že sloupec by měl být importován jako měna bez ohledu na formátování. Možnosti systémových tabulek jsou tedy ve srovnání se schema.ini jednoduché. Dále zkontrolujeme strukturu tabulek.

MSysIMEXSpecs struktura

Tabulka představuje sadu uložených specifikací. U každého řádku tabulka popisuje celkový formát souboru, podobně jako ve 2. sekci schema.ini . Existují však různé možnosti, které je třeba zvážit.

  • DateDelim :Identifikuje oddělovač pro data. Obvykle je to / nebo - . Může to být pouze jeden nebo žádný znak.
  • DateFourDigitYear :Pole Ano/Ne udávající, zda jsou data formátována čtyřmi číslicemi pro roky. Pokud je nastaveno na ano, hodnoty jako 10/10/20 nebudou považována za platná data.
  • DateLeadingZeros :Další pole Ano/Ne udávající, zda data obsahují nuly na začátku.
  • DateOrder :Určuje formátování data, které chceme použít. Následující kódy jsou platné:
    • 0 :DMY
    • 1 :DYM
    • 2 :MDY
    • 3 :MYD
    • 4 :YDM
    • 5 :YMD
  • DecimalPoint :Označuje znak pro oddělení integrální a zlomkové části pro desetinné číslo. Musí to být přesně jen jeden znak.
  • FieldSeparator :Odděluje pole v textovém souboru. U souboru CSV by to bylo , (čárka). Také to musí být přesně jeden znak.
  • FileType :Podobné jako schema.ini CharacterSet . Jak bylo zmíněno v předchozím článku, můžete najít všechny možné kódové stránky podporované na vašem počítači se systémem Windows, podívejte se do klíče registru Computer\HKEY_CLASSES_ROOT\MIME\Database\Codepage\ . Identifikuje kódování textového souboru. Můžete použít stejný identifikátor kódové stránky. Je tu však jeden problém. FileType je definován jako Integer . Kódová stránka 65000 (např. Unicode) by proto byla hlášena jako -536. Chcete-li převést jakýkoli identifikátor kódové stránky větší než 32767, můžete použít vzorec CInt("&H" & Hex(x)) a pro obrácení operace CLng("&H" & Hex(x)) . Například převod kódové stránky 65000 by prošel přes CInt("&H" & Hex(65000)) výtěžek -536. Pro obrácení CLng("&H" & Hex(-536)) získat 65 000 zpět.
  • SpecID :Automatické číslování tabulky. Všimněte si, že toto není primární klíč tabulky. Tento sloupec se používá s MSysIMEXColumns.SpecID vztahovat záznamy. Mezi těmito dvěma tabulkami však není žádné omezení cizího klíče, takže může dojít k osamoceným smazáním.
  • SpecName :Primární klíč tabulky. Jednoznačně identifikuje specifikaci. Kdykoli uložíte specifikaci, jméno, které zadáte, bude zaznamenáno v tomto poli. Když importujete nebo exportujete pomocí průvodců, Access může automaticky vytvořit novou specifikaci, i když jste nepoužili Advanced a výslovně jej uložit.
  • SpecType :Může být pouze 1 k označení souboru s oddělovači nebo 2 což znamená soubor s pevnou šířkou.
  • StartRow :Určuje řádek v textovém souboru pro zahájení skenování pro import. To může být libovolné číslo, takže je možné přeskočit několik řádků v horní části souboru. To může být užitečné pro špatně tvarované textové soubory, které mají nekonformní záhlaví.
  • TextDelim :Jeden znak, který odděluje textovou hodnotu. Pokud text není oddělen, lze jej vynechat. Pokud můžete ovládat formát textových souborů, je obvykle dobré mít textové oddělovače. Textový soubor s oddělovači textu zůstane ve správném formátu, i když text v textu obsahuje oddělovače polí (např. čárku).
  • TimeDelim :Označuje oddělovací znak použitý pro čas. Může to být libovolný jednotlivý znak nebo může být prázdné a výchozí je : (dvojtečka).

MSysIMEXColumns struktura

Tabulka popisuje jednotlivé sloupce v textovém souboru a případné atributy. To zhruba odpovídá třetí části schema.ini . Existují však další možnosti, jako je indexování, které v schema.ini neexistuje .

  • Attributes :Neznámý. V mých testech jsem nikdy nedostal nic jiného než 0 . Pokud víte, k čemu slouží a jak se dá použít, klidně zanechte komentář.
  • DataType :Datový typ sloupce. Číslo by mělo odpovídat DAO.DataTypeEnum.
  • FieldName :Název sloupce. Všimněte si, že Access bude ve výchozím nastavení FieldN kde N je kladné celé číslo.
  • IndexType :Může být 0 pro označení žádných indexů 1 k označení běžného indexu nebo 2 k označení jedinečného indexu.
  • SkipColumns :Booleovská hodnota označuje, zda má být sloupec přeskočen. Pokud je přeskočen, nebude k dispozici pro dotazování ani čtení.
  • SpecID :Odpovídá MSysIMEXSpecs.SpecID automatické číslování. Všimněte si, že mezi těmito dvěma tabulkami nejsou žádná omezení cizího klíče. Pokud jste smazali záznamy, mohou existovat osiřelé záznamy ze MSysIMEXSpecs stůl.
  • Start :Celé číslo označující začátek sloupce v textovém souboru. To je důležité pro soubor s pevnou šířkou. U souborů s oddělovači bude Access k určení začátku stále používat pozici sloupce prvního řádku, kde se pole nachází. Kromě toho Access použije sloupec k určení pořadového řazení sloupců.
  • Width :Další celé číslo, kterým se řídí velikost sloupce. Na pilníku s pevnou šířkou je to také významné. Uvědomte si, že Microsoft Access použije tyto informace pro datové typy s proměnlivou délkou, jako je text nebo binární, k odpovídající velikosti sloupce i v souboru s oddělovači.

Řetězec připojení pomocí specifikací:DSN parametr

V předchozím článku jste viděli, že pro použití souboru schema.ini nedošlo k žádné změně připojovacího řetězce. Implicitně jsme odkazovali na schema.ini jednoduše zajištěním, že existuje ve stejné složce, kde je přítomen textový soubor, který propojujeme nebo otevíráme. Použití uložených specifikací ze systému však vyžaduje, abychom dodali informace ve spojení. Toho dosáhneme vyplněním DSN parametr. Hodnota musí odkazovat na název uložené specifikace, jak je zaznamenáno v MSysIMEXSpecs.SpecName sloupec.

Zde je ukázka:

Set db = DBEngine.OpenDatabase(vbNullString, False, False, "Text;DSN=Products Link Specification;IMEX=1;DATABASE=C:\Links")

Přístup bude vyžadovat, aby byly v připojovacím řetězci zadány parametry DSN i IMEX. Pokud se pokusíte vynechat IMEX parametr, zobrazí se chyba o tom, že Access nemůže najít specifikaci, přestože specifikace existuje v MSysIMEXSpecs stůl. Z toho také vyplývá, že tabulka musí obsahovat záznam s SpecName obsahující stejnou hodnotu zadanou v DSN parametr.

Jak bylo uvedeno v předchozím článku, s jednotlivými textovými soubory se zachází jako s „tabulkou“ v „databázi“ složky. Takže i když připojovací řetězec neukazuje na konkrétní textový soubor, připojovací řetězec použije specifikované specifikace pro všechny textové soubory otevřené prostřednictvím připojení.

I když je možné použít jiné parametry, jak je popsáno ve stejném článku, měli byste si být vědomi toho, že v případě konfliktu bude mít uložená specifikace přednost před připojovacím řetězcem. Z tohoto důvodu je nejlepší použít minimální sadu parametrů potřebných k úspěšnému připojení k textovému souboru a nechat uložené specifikace, aby popsaly, jak textový soubor číst.

Závěr

Naučili jste se alternativní způsob, jak popsat strukturu textového souboru bez použití externího souboru. Podívali jsme se, jak Access používá dvě systémové tabulky k ukládání specifikací. Nakonec jste se také naučili, jak specifikovat uložené specifikace pomocí DSN parametr. V tuto chvíli jsme probrali vše, co potřebujeme vědět o propojování nebo otevírání textových souborů v Accessu. V příštím článku shrneme informace získané ve zbytku seriálu dohromady. Podíváme se také na použití připojovacích řetězců v dotazech Access pro přístup bez kódu.


  1. Jak získat rozdíl v letech ze dvou různých dat?

  2. Jak klastrovat Odoo 12 pomocí streamovací replikace PostgreSQL pro vysokou dostupnost

  3. Co jsou aplikace v reálném čase?

  4. Jaká je při provádění uložené procedury výhoda použití CommandType.StoredProcedure oproti použití CommandType.Text?