Access
 sql >> Teknologi Basis Data >  >> RDS >> Access

Parameter String Koneksi untuk Sumber File Teks

Parameter String Koneksi untuk Sumber File Teks

Pada artikel sebelumnya saya membahas parameter string koneksi untuk sumber data Excel. Sekarang kita akan fokus pada file teks. Ada berbagai metode untuk menjelaskan skema file teks dan menggunakan informasi selama membuka atau menautkan di Access. Sementara spreadsheet Excel memiliki beberapa kemiripan struktur, ini tidak berlaku untuk file teks. Kami harus menjawab beberapa pertanyaan tentang struktur file teks termasuk:

  1. Apakah lebarnya dibatasi atau tetap?
  2. Bagaimana cara mengetahui kapan satu kolom berakhir dan kolom lainnya dimulai?
  3. Apakah teks dikutip atau tidak?
  4. Bagaimana seharusnya kita mengurai tanggal dan waktu?
  5. Bagaimana dengan jumlah mata uangnya? Bagaimana formatnya?

dan mungkin lebih. Meskipun CSV mungkin tampak terdefinisi dengan baik secara sekilas tetapi ketika Anda menggalinya, itu sebenarnya sangat longgar. Tidak ada kesepakatan universal tentang apakah teks harus dikutip, bagaimana tanggal harus diformat. Untuk semua alasan tersebut, menggunakan file teks biasanya memerlukan penggunaan beberapa jenis informasi skema untuk menggambarkan struktur file teks. Ada tiga cara untuk menyimpan informasi skema:

  1. Sebuah schema.ini file disimpan dalam direktori
  2. Akses' MSysIMEX dan MSysIMEXColumns tabel
  3. Akses' ImportExportSpecification.XML properti.

Untuk memperumit masalah, ada beberapa metode berbeda yang dapat kita gunakan untuk bekerja dengan file teks tetapi tidak semua metode dapat menggunakan semua 3 cara berbeda untuk mendapatkan informasi skema. Misalnya, DoCmd.TransferText bekerja dengan tabel sistem tetapi tidak menyimpan impor/ekspor. Di sisi lain, DoCmd.RunSavedImportExport bekerja dengan ImportExportSpecification obyek. Namun, ImportExportSpecification tidak digunakan sebagai bagian dari penautan. Jadi untuk diskusi kami, kami sebenarnya hanya memiliki 2 metode yang tersedia dalam konteks membuka atau menautkan ke file teks. Penting untuk dicatat perbedaan antara menyimpan spesifikasi ke MSysIMEXSpecs &MSysIMEXColumns tabel vs. menyimpan impor/ekspor yang menjadi ImportExportSpecification obyek. Kami akan mengeksplorasi 2 metode tersebut di artikel berikutnya.

String koneksi untuk file teks

Kita harus mempertimbangkan bagaimana Access akan melihat file teks. Pada artikel sebelumnya, kita melihat bahwa setiap lembar atau rentang bernama direpresentasikan sebagai "tabel" dalam "database" spreadsheet Excel. Tetapi file teks tidak memiliki konstruksi seperti itu. Apa yang membuat "database" itu? Jawabannya adalah bahwa folder tersebut mewakili "database" dan oleh karena itu file teks apa pun di dalam folder adalah "tabel". Untuk alasan itu, dimungkinkan untuk memiliki beberapa informasi skema untuk folder yang sama jika folder tersebut berisi lebih dari satu format yang memungkinkan untuk file teks apa pun yang disimpan di dalam folder tersebut. Anda akan melihat nanti bahwa ketika kami membuat string koneksi, kami menautkan ke folder, lalu mengakses file individual sebagai tabel.

Oleh karena itu, gunakan pengaturan ini seperti yang ditunjukkan:

Kami kemudian dapat membuka file teks menggunakan kode VBA ini:

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

Ini akan menghasilkan output:

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

Perhatikan hal-hal berikut:

  1. Kami tidak menentukan file teks dalam string koneksi kami. Kami menggunakan folder sebagai gantinya.
  2. Nama-nama “tabel” diubah karena sebuah titik pada nama bukanlah karakter yang valid. Ergo, products.csv menjadi products#csv .
  3. Dibandingkan dengan Excel, tidak ada parameter wajib selain menentukan driver file teks dan jalur ke folder.

Pada artikel berikutnya, Anda akan mempelajari lebih lanjut tentang mendeskripsikan skema file teks. Namun, untuk string koneksi itu sendiri, kata kunci berikut dikenali.

FMT parameter:Menunjukkan format file teks.

Delimited :File dibatasi oleh karakter. Karakter yang digunakan ditentukan oleh informasi skema.
Fixed :File memiliki lebar tetap untuk kolom. Sekali lagi, lebar kolom tertentu ditentukan oleh informasi skema.

HDR parameter:Baris header

YES :Baris pertama adalah header dan harus menjadi nama kolom untuk “tabel”/”recordset”
NO :Baris pertama tidak diperlakukan berbeda dan hanya data. Semua nama kolom akan diberi nama “FN” di mana “N” adalah angka yang dimulai dengan 1

IMEX parameter:Perilaku Impor/Ekspor

Ini mengatur bagaimana tipe data kolom harus didefinisikan, berdasarkan konten:
1 :Jika kolom berisi tipe data yang berbeda, perlakukan sebagai string. Jika tidak, cocokkan kolom dengan tipe data terbaik.
2 :Selalu cocokkan kolom dengan tipe data tertentu berdasarkan sampel. Hal tersebut dapat menyebabkan kesalahan pembacaan saat kita membaca baris yang berisi data yang tidak sesuai dengan tipe data yang diharapkan.

ACCDB parameter:Menunjukkan bahwa Access menggunakan format file ACCDB?

Secara default, ini selalu disetel ACCDB=YES dalam format file accdb. Namun, menghilangkannya atau menyetelnya ke NO tampaknya tidak menghasilkan apa-apa. Ini sedikit misteri. Jika ada yang bisa membagikan apa efek parameter ini, posting di komentar dan saya akan memperbarui blog.

DATABASE parameter:Path ke folder yang berisi file teks

Parameter harus berisi jalur yang sepenuhnya memenuhi syarat. Seharusnya tidak menyertakan nama file teks.

CharacterSet Parameter:Mengidentifikasi pengkodean karakter yang akan digunakan untuk membaca file teks.

Ini akan dibahas lebih detail di artikel berikutnya. Ini juga dapat dijelaskan dalam informasi skema.

DSN Parameter:Mengidentifikasi informasi skema yang akan digunakan dengan file teks.

Nama harus sesuai dengan MSysIMEXSpec , yang akan dianalisis pada artikel selanjutnya. Ini hanya berfungsi dengan MSysIMEX*** tabel. Jika Anda ingin menggunakan schema.ini , Anda hanya tidak menyertakan DSN di string koneksi Anda.

Penting untuk dicatat bahwa driver file teks hanya akan mempertimbangkan parameter yang tercantum di atas. Tidak mungkin memasukkan kata kunci lain dan menguraikannya oleh driver file teks. Karena alasan itu, Anda tidak akan dapat menentukan semua detail tentang file teks dari string koneksi saja.

Skema default untuk file teks

Secara teori, Anda dapat membuka atau menautkan file teks tanpa informasi skema apa pun, tetapi ini jarang berhasil. Dalam situasi ini, Access hanya akan menganggap default untuk berbagai opsi. Jika file teks sesuai dengan semua default saat ini, Access akan berhasil membaca file. Lebih penting lagi, tidak adanya kesalahan dalam membuka atau menautkan ke file teks tidak berarti data direpresentasikan secara bermakna. Misalnya, jumlah mata uang yang diformat khusus dapat ditafsirkan sebagai teks daripada mata uang, dan teks tanpa batas dengan koma di dalam teks mungkin salah diuraikan, menambahkan kolom yang tidak diinginkan. Defaultnya ditentukan di dua tempat yang memungkinkan:

  1. Akses akan melihat pengaturan registri. Untuk instalasi Office 365, registri dapat ditemukan di:
    Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Microsoft\Office\16.0\Access Connectivity Engine\Engines\Text . Kami akan merujuk ke lokasi ini sebagai “Kunci registri teks” di artikel berikutnya.
  2. Setelan yang akan Anda lihat di Region applet di panel kontrol Windows. Kami akan merujuk ke lokasi ini sebagai "Pengaturan Windows".

Catatan tentang penyandian untuk file teks

Adalah wajib untuk memiliki penyandian yang benar terlepas dari metode mana yang mungkin Anda gunakan untuk mengakses file teks Anda. Ketika konten file teks Anda dibatasi hanya untuk karakter dalam setengah bagian bawah dari poin ASCII (misalnya 0-127), tidak masalah pengkodean apa yang Anda pilih untuk file teks Anda. Defaultnya biasanya cukup baik. Namun, jika file teks Anda dapat berisi Unicode atau karakter apa pun yang lebih besar dari 127, maka Anda, pengembang, untuk mengetahui penyandiannya. Jika pengkodean yang salah ditentukan, teks mungkin tidak diimpor seperti yang diharapkan dan tidak akan menimbulkan kesalahan apa pun. Untuk detail yang berantakan, saya akan merujuk Anda ke Joel Spolsky tentang masalah ini.

Memilih antara schema.ini dan MSysIMEX*** tabel

Seperti yang akan Anda lihat di artikel berikutnya, kedua metode memiliki tumpang tindih yang cukup besar dalam kemampuan. Oleh karena itu, Anda mungkin menemukan diri Anda memiliki pilihan untuk menggunakan keduanya. Perbedaan utama bermuara pada apakah Anda ingin skema disimpan di dalam aplikasi Anda atau di dalam folder tempat file teks diharapkan berada. Saat Anda menggunakan schema.ini file, Anda mengasumsikan bahwa file teks akan ada di folder tertentu dan akan memiliki nama tertentu.

Dengan MSysIMEX*** , Anda dapat memproses file teks apa pun dari mana saja hanya dengan merujuk pada spesifikasi yang ditentukan. Namun, tidak mudah untuk mengedit spesifikasi di luar Access. Bahkan di dalam Access, tidak mudah untuk mengubah spesifikasi menggunakan UI. schema.ini memiliki beberapa fitur tambahan yang tidak langsung tersedia dengan MSysIMEX*** tabel.

Meskipun demikian, pertanyaan tentang tempat menyimpan spesifikasi kemungkinan besar akan menjadi faktor terpenting Anda dalam memutuskan mana yang akan digunakan.

Kesimpulan

Anda sangat dianjurkan untuk memiliki informasi skema yang ditentukan untuk file teks apa pun yang berisi tanggal atau jumlah mata uang. Tanggal dan jumlah mata uang sensitif terhadap pengaturan regional yang dapat mengganggu penguraian data yang benar. Karena kami memiliki dua sistem yang berbeda dengan serangkaian opsi yang tersedia, kami harus mempertimbangkan masing-masing di artikel berikutnya. Anda memiliki pilihan untuk menggunakan salah satu (atau bahkan keduanya di antara file teks yang berbeda). Sekarang kita akan beralih ke schema.ini di artikel berikutnya. Nanti kita akan melihat MSysIMEX*** tabel di artikel berikut.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Produk Microsoft Office yang Menolak Mati

  2. Sisipan Massal atau Perbarui untuk tabel dengan bidang Lampiran

  3. Bidang Teks atau Numerik – Metode SQL Sederhana untuk Mengganti Tipe Data

  4. Membuka atau Menautkan Teks atau Excel sebagai Sumber Data di Microsoft Access

  5. [DIPERBARUI 2020-01-23] Microsoft Office 365 Build 1912 Memecah Identitas Tabel Tertaut ODBC