Access
 sql >> Baza danych >  >> RDS >> Access

Parametry ciągu połączenia dla źródeł plików tekstowych

Parametry ciągu połączenia dla źródeł plików tekstowych

W poprzednim artykule omówiłem parametry parametrów połączenia dla źródeł danych Excel. Skupimy się teraz na plikach tekstowych. Istnieją różne metody opisywania schematu plików tekstowych i wykorzystywania informacji podczas otwierania lub łączenia w programie Access. Podczas gdy arkusze kalkulacyjne Excela miały pewne podobieństwo struktury, nie dotyczy to plików tekstowych. Musimy odpowiedzieć na kilka pytań dotyczących struktury pliku tekstowego, w tym:

  1. Czy jest rozgraniczona czy stała?
  2. Jak stwierdzić, kiedy jedna kolumna się kończy, a druga zaczyna?
  3. Czy tekst jest cytowany, czy nie?
  4. Jak powinniśmy analizować daty i godziny?
  5. A co z kwotami w walutach? Jak powinny być sformatowane?

i być może więcej. Chociaż na pierwszy rzut oka CSV może wydawać się dobrze zdefiniowany, ale kiedy się do niego zagłębisz, w rzeczywistości jest bardzo luźno zdefiniowany. Nie ma powszechnej zgody co do tego, czy tekst powinien być cytowany, jak należy sformatować daty. Z tych wszystkich powodów używanie plików tekstowych zwykle wymaga użycia pewnego rodzaju informacji o schemacie w celu opisania struktury pliku tekstowego. Istnieją trzy sposoby przechowywania informacji o schemacie:

  1. schema.ini plik przechowywany w katalogu
  2. Dostęp” MSysIMEX i MSysIMEXColumns stoły
  3. Dostęp” ImportExportSpecification.XML nieruchomość.

Aby skomplikować sprawę, istnieje kilka różnych metod, których możemy użyć do pracy z plikami tekstowymi, ale nie wszystkie metody mogą wykorzystywać wszystkie 3 różne sposoby uzyskiwania informacji o schemacie. Na przykład DoCmd.TransferText działa z tabelami systemowymi, ale nie ma zapisanych importów/eksportów. Z drugiej strony DoCmd.RunSavedImportExport działa z ImportExportSpecification obiekt. Jednak ImportExportSpecification nie jest używany w ramach linkowania. Tak więc do naszej dyskusji w rzeczywistości mamy tylko 2 metody dostępne w kontekście otwierania lub linkowania do pliku tekstowego. Należy zwrócić uwagę na różnicę między zapisywaniem specyfikacji w MSysIMEXSpecs &MSysIMEXColumns tabele a zapisywanie importu/eksportu, który staje się ImportExportSpecification obiekt. Omówimy te 2 metody w następnych artykułach.

Ciąg połączenia dla pliku tekstowego

Powinniśmy zastanowić się, jak Access będzie postrzegał plik tekstowy. W poprzednim artykule widzieliśmy, że każdy arkusz lub nazwany zakres był reprezentowany jako „tabela” w „bazie danych” arkusza kalkulacyjnego Excel. Ale plik tekstowy nie ma takiej konstrukcji. Co zatem tworzy „bazę danych”? Odpowiedź jest taka, że ​​folder reprezentuje „bazę danych”, a zatem wszelkie pliki tekstowe w folderze są „tabelami”. Z tego powodu możliwe jest posiadanie wielu informacji o schemacie dla tego samego folderu, jeśli ten folder zawiera więcej niż jeden możliwy format dowolnych plików tekstowych przechowywanych w folderze. Zobaczysz później, że kiedy tworzymy ciąg połączenia, łączymy się z folderem, a następnie uzyskujemy dostęp do pojedynczego pliku jako tabeli.

Dlatego użyj tej konfiguracji, jak pokazano:

Następnie możemy otworzyć plik tekstowy za pomocą tego kodu VBA:

Dim db As DAO.Database
Set db = DBEngine.OpenDatabase(vbNullString, False, False, "Text;DATABASE=C:\Links")

Dim tdf As DAO.TableDef
For Each tdf In db.TableDefs
    Debug.Print tdf.Name
    
    Dim fld As DAO.Field
    For Each fld In tdf.Fields
        Debug.Print fld.Name,
    Next
    Debug.Print
    
    Dim rs As DAO.Recordset
    Set rs = tdf.OpenRecordset
    Do Until rs.EOF
        For Each fld In rs.Fields
            Debug.Print fld.Value,
        Next
        Debug.Print
        rs.MoveNext
    Loop
    
    Debug.Print
Next

Powinno to dać wynik:

Products#csv
Products      Count         PackDate      Amount        ShipDate      
Apples         3            12/4/2020     $ 1.02        4/12/2020     
Bananas        5            4/12/2020     $ 1,234.56    12/4/2020     
Figs           8            5/7/2020      $ 0.01        7/5/2020      
Grapes         11           10/10/2020    $12.30        10/10/2020

Zwróć uwagę na następujące rzeczy:

  1. Nie określiliśmy pliku tekstowego w naszych parametrach połączenia. Zamiast tego użyliśmy folderu.
  2. Nazwy „tabel” zostały zmienione, ponieważ kropka w nazwie nie jest prawidłowym znakiem. Ergo, products.csv stał się products#csv .
  3. W porównaniu z Excelem, nie ma obowiązkowych parametrów poza określeniem sterownika pliku tekstowego i ścieżki do folderu.

W następnym artykule dowiesz się więcej o opisie schematu plików tekstowych. Jednak w przypadku samego ciągu połączenia rozpoznawane są następujące słowa kluczowe.

FMT parametr:Wskaż format pliku tekstowego.

Delimited :Plik jest oddzielony znakiem. Używany znak jest określony przez informacje o schemacie.
Fixed :Plik ma ustaloną szerokość dla kolumn. Ponownie, konkretne szerokości kolumn są określone w informacjach o schemacie.

HDR parametr:Wiersz nagłówka

YES :Pierwszy wiersz jest nagłówkiem i powinien stać się nazwami kolumn dla „tabeli”/”zestawu rekordów”
NO :Pierwszy wiersz nie jest traktowany inaczej i zawiera tylko dane. Wszystkie nazwy kolumn będą miały nazwę „FN”, gdzie „N” jest liczbą zaczynającą się od 1

IMEX parametr:Zachowanie importu/eksportu

To reguluje sposób definiowania typów danych kolumn na podstawie zawartości:
1 :Jeśli kolumna zawiera różne typy danych, potraktuj ją jako ciąg. W przeciwnym razie dopasuj kolumnę do najlepszego typu danych.
2 :Zawsze dopasowuj kolumnę do określonego typu danych na podstawie próbki. Może to spowodować błąd w odczycie, gdy odczytamy wiersz zawierający dane, które nie pasują do oczekiwanego typu danych.

ACCDB parametr:wskazuje, że program Access używa formatu pliku ACCDB?

Domyślnie jest to zawsze ustawione ACCDB=YES w formacie pliku accdb. Jednak pominięcie go lub ustawienie go na NIE wydaje się nic nie robić. To trochę tajemnica. Jeśli ktoś może podzielić się wpływem tego parametru, opublikuj w komentarzu, a ja zaktualizuję bloga.

DATABASE parametr:Ścieżka do folderu zawierającego pliki tekstowe

Parametr powinien zawierać w pełni kwalifikowaną ścieżkę. Nie powinno zawierać nazw plików tekstowych.

CharacterSet Parametr:Identyfikuje kodowanie znaków używane do odczytywania plików tekstowych.

Zostanie to omówione bardziej szczegółowo w następnym artykule. Można to również opisać w informacji o schemacie.

DSN Parametr:Identyfikuje informacje o schemacie do użycia z plikiem tekstowym.

Nazwa musi odpowiadać MSysIMEXSpec , który zostanie przeanalizowany w dalszej części artykułu. Działa to tylko z MSysIMEX*** tabele. Jeśli chcesz użyć schema.ini , po prostu nie dołączasz żadnego DSN w parametrach połączenia.

Należy pamiętać, że sterownik pliku tekstowego uwzględni tylko parametry wymienione powyżej. Nie jest możliwe wpisanie innych słów kluczowych i przeanalizowanie ich przez sterownik pliku tekstowego. Z tego powodu nie będziesz w stanie określić wszystkich szczegółów pliku tekstowego na podstawie samego ciągu połączenia.

Domyślny schemat plików tekstowych

Teoretycznie możesz otworzyć lub połączyć plik tekstowy bez żadnych informacji o schemacie, ale to rzadko działa. W takiej sytuacji program Access po prostu przyjmie wartości domyślne dla różnych opcji. Jeśli plik tekstowy jest zgodny ze wszystkimi bieżącymi ustawieniami domyślnymi, program Access pomyślnie odczyta plik. Co ważniejsze, brak błędów w otwieraniu lub łączeniu do pliku tekstowego nie oznacza, że ​​dane są reprezentowane w sposób znaczący. Na przykład kwoty w specjalnie sformatowanych walutach mogą być interpretowane jako tekst, a nie waluta, a tekst nierozdzielany przecinkami w tekście może zostać źle przeanalizowany, dodając niechciane kolumny. Wartości domyślne są określane w dwóch możliwych miejscach:

  1. Dostęp sprawdzi ustawienia rejestru. W przypadku instalacji usługi Office 365 rejestr może znajdować się pod adresem:
    Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Microsoft\Office\16.0\Access Connectivity Engine\Engines\Text . W następnych artykułach będziemy określać tę lokalizację jako „klucze rejestru tekstowego”.
  2. Ustawienia, które zobaczysz w Region aplet w panelu sterowania Windows. Tę lokalizację będziemy nazywać „ustawieniami systemu Windows”.

Uwaga na temat kodowania plików tekstowych

Prawidłowe kodowanie jest obowiązkowe bez względu na to, jakich metod możesz użyć, aby uzyskać dostęp do plików tekstowych. Gdy zawartość pliku tekstowego jest ograniczona tylko do znaków w dolnej połowie punktów ASCII (np. 0-127), nie ma znaczenia, jakie kodowanie wybierzesz dla plików tekstowych. Wartość domyślna jest zwykle wystarczająca. Jeśli jednak Twoje pliki tekstowe mogą zawierać dowolny kod Unicode lub dowolne znaki większe niż 127, to Ty, programista, musisz znać kodowanie. Jeśli określono nieprawidłowe kodowanie, tekst może nie zostać zaimportowany zgodnie z oczekiwaniami i nie spowoduje żadnych błędów. Po niechlujne szczegóły odsyłam Cię w tej sprawie do Joela Spolsky'ego.

Wybieranie między schema.ini i MSysIMEX*** stoły

Jak zobaczysz w kolejnych artykułach, obie metody mają dość duże nakładanie się możliwości. W związku z tym może się okazać, że masz wybór, czy użyć jednego z nich. Główna różnica sprowadza się do tego, czy chcesz, aby schemat był przechowywany w aplikacji, czy w folderze, w którym powinny znajdować się pliki tekstowe. Kiedy używasz schema.ini plik, zakładasz, że pliki tekstowe będą znajdować się w określonym folderze i będą miały określoną nazwę.

Z MSysIMEX*** , możesz przetwarzać dowolne pliki tekstowe z dowolnego miejsca, po prostu odwołując się do zdefiniowanej specyfikacji. Edycja specyfikacji poza programem Access nie jest jednak łatwa. Nawet w programie Access nie jest łatwo dostosować specyfikacje za pomocą interfejsu użytkownika. schema.ini ma kilka dodatkowych funkcji, które nie są bezpośrednio dostępne w MSysIMEX*** tabele.

Niemniej jednak pytanie, gdzie przechowywać specyfikację, najprawdopodobniej będzie najważniejszym czynnikiem przy podejmowaniu decyzji, której użyć.

Wniosek

Zachęcamy do zdefiniowania informacji o schemacie dla wszystkich plików tekstowych zawierających daty lub kwoty walut. Daty i kwoty walut są wrażliwe na ustawienia regionalne, które mogą zakłócać prawidłowe analizowanie danych. Ponieważ mamy do czynienia z dwoma różnymi systemami z różnym dostępnym zestawem opcji, każdy z nich musimy rozważyć w kolejnych artykułach. Masz wybór, aby użyć jednego (lub nawet obu spośród różnych plików tekstowych). Przejdziemy teraz do schema.ini w następnym artykule. Później przyjrzymy się MSysIMEX*** tabele w następnym artykule.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nowe sterowniki dla SQL Server… Co musisz wiedzieć

  2. Co to jest relacyjna baza danych?

  3. 5 świetnych powodów, dla których warto pobrać i używać szablonów Microsoft Access

  4. Jak utworzyć pusty formularz w programie Access 2016

  5. 5 powodów, dla których Microsoft Access jest świetny dla start-upów