Bahasa Indonesia

Data & spreadsheet · CSV Lebih bersih

CSV Dialek yang Keluar: Kutipan Dua Kali Lipat, Garis Miring Balik, dan Ekspor Basis Data

· Latar belakang

csv penguraian interoperabilitas

Jalur CSV dengan tanda kutip ganda berhasil sementara escape backslash tetap berupa teks literal
Ilustrasi vektor ToolAcre asli

RFC 4180 mengatakan untuk menggandakan kutipan; beberapa alat basis data mengekspor dengan garis miring terbalik. Posting ini menjelaskan konvensi pelolosan yang beredar, dari mana masing-masing konvensi berasal, dan mengapa file yang valid dalam satu dialek rusak di dialek lain.

Ekspor basis data yang dibaca oleh spreadsheet dengan garis miring terbalik — dua tradisi pelolosan yang bertabrakan dalam satu file

Ekspor dapat berisi garis miring terbalik yang diikuti dengan tanda kutip karena produsennya mengikuti konvensi gaya bahasa pemrograman, sedangkan parser yang berorientasi pada spreadsheet mengharapkan tanda kutip dua kali lipat. Menggabungkan satu dialek dengan dialek lainnya tidak menciptakan kompromi yang netral. Ini mengubah keadaan yang dikutip membuka dan menutup atau meninggalkan karakter escape dalam data.

ToolAcre mendukung satu aturan yang jelas: bidang dapat diapit dengan tanda kutip ganda dan tanda kutip dalam diwakili oleh dua tanda kutip. Backslash tidak memiliki peran melarikan diri. Mengidentifikasi kontrak tersebut sebelum memuat lebih aman daripada meminta petugas kebersihan menebak tanda baca mana yang dimaksudkan oleh produsen.

Konvensi RFC — masukkan tanda kutip ganda dan gandakan tanda kutip dalam, tanpa karakter escape sama sekali

Untuk nilai seperti `She said "hello", then left`, gaya RFC CSV mengelilingi bidang dan menulis tanda bagian dalam dua kali. Pembatas tetap berada dalam status kutipan, dan setiap pasangan yang digandakan mengembalikan satu kutipan literal. Serialisasi menerapkan transformasi yang sama secara terbalik.

Bidang diberi tanda kutip jika berisi pembatas saat ini, tanda kutip, LF, CR, atau spasi di sekitarnya, atau kapan pun Tanda kutip setiap bidang dipilih. Tidak ada karakter pelarian yang terpisah. Tata bahasa kecil ini diuji untuk pembatas, akhiran rekaman yang disematkan, dan pasangan kutipan.

Tradisi C - tanda kutip dengan garis miring terbalik, baris baru, dan pembatas yang diwarisi dari bahasa pemrograman dan beberapa pemuat basis data

Beberapa sistem sumber dapat menentukan konvensi garis miring terbalik, namun ToolAcre tidak memiliki saklar untuk konvensi tersebut. Garis miring terbalik ditambahkan ke bidang saat ini seperti karakter biasa lainnya. Kutipan berikut kemudian diinterpretasikan berdasarkan apakah parser berada dalam keadaan dikutip dan apakah parser tersebut memiliki kutipan berpasangan.

Akibatnya, ekspor garis miring terbalik harus diurai oleh alat yang dikonfigurasi untuk dialek tersebut sebelum dikonversi ke tanda kutip ganda CSV. Pencarian-dan-penggantian berisiko karena garis miring terbalik literal dan urutan yang lolos bisa terlihat sama. Tata bahasa sumber harus memutuskan mana yang merupakan sintaksis.

Pelarian garis miring terbalik adalah dialek alternatif yang tidak didukung, bukan mode yang dapat dibaca oleh ToolAcre

Buku kerja menamai produk database dan pustaka bingkai data, namun default dan mode yang dapat dikonfigurasi tidak didokumentasikan dalam repositori ini. Artikel ini tidak mengaitkan dialek dengan vendor tertentu. Lihat dokumentasi eksportir atau pemuat yang digunakan oleh alur kerja.

Tangkap perintah dan opsi yang menghasilkan file. Suatu produk mungkin mendukung beberapa mode, jadi namanya saja bukan merupakan dialek. Reproduksibilitas berasal dari konfigurasi ditambah sampel yang berisi kasus tepi pembatas, kutipan, baris baru, dan garis miring terbalik.

Default database dan pustaka tertentu memerlukan dokumentasinya sendiri dan tidak diklaim di sini

Dalam parser ini, `"a \"quote\"",b` tidak berarti apa yang diharapkan oleh pembaca gaya C, karena garis miring tetap ada dalam teks dan tanda kutip mengatur status CSV. Sebaliknya, pasangan ganda di dalam kolom tanda kutip menjadi satu tanda kutip, bukan dua karakter literal.

Ketidakcocokan dapat memicu kolom bergeser atau peringatan tanda kutip tidak tertutup, atau dapat diurai menjadi string yang tampak salah tanpa kesalahan struktural. Pratinjau baris perwakilan dan bandingkan dengan produser. Keberhasilan sintaksis saja tidak dapat memastikan bahwa semantik escape cocok.

Berdasarkan aturan ToolAcre, garis miring terbalik tetap literal dan tanda kutip ganda adalah satu-satunya jalan keluar dari kutipan

Tulis satu sel yang berisi koma dan kutipan sebagai RFC CSV: `"She said ""hi"", then left"`. ToolAcre mengembalikan nilai persisnya `She said "hi", then left`. Tulis kutipan bagian dalam dengan garis miring terbalik dan amati bahwa garis miring tersebut tidak memiliki perlindungan khusus.

Perbandingan tersebut menunjukkan aturan parser tanpa bergantung pada merek database. Setelah penguraian yang benar, pengunduhan menghasilkan tanda kutip dua kali lipat secara konsisten. Setelah penguraian yang tidak cocok, ekspor hanya akan menstandardisasi sel yang salah, jadi selesaikan dialek sumber sebelum memercayai hasilnya.

Apa yang tidak tercakup di sini — ekspor biner, file dengan lebar tetap, dan karakter escape yang sepenuhnya dapat disesuaikan

Ekspor biner, rekaman dengan lebar tetap, dan karakter escape khusus berada di luar rute. Kutipan yang tidak ditutup dilaporkan dan menggunakan input yang tersisa sebagai satu bidang; pembersih tidak menyimpulkan di mana letak tutup yang hilang. Ambiguitas tersebut tidak dapat diperbaiki secara umum.

Antarmuka juga tidak mengubah dialek garis miring terbalik secara otomatis. Gunakan parser yang secara eksplisit memberi nama karakter escape, dapatkan tabel string terverifikasi, lalu buat serial ke konvensi target. Setiap tata bahasa harus diterapkan satu kali pada batas yang diketahui.

Ketahui dialek di kedua ujungnya — bagaimana perbaikan kutipan ToolAcre CSV Cleaner menormalkan bidang ke arah kutipan konsisten yang dibaca oleh parser standar

Ketahui kedua titik akhir. ToolAcre sesuai jika sumber mengikuti tanda kutip ganda CSV atau ketika parser lain telah menormalkan dialek berbeda ke dalam sel terverifikasi. Outputnya menawarkan kutipan minimal atau semua bidang yang konsisten dan menggandakan setiap kutipan yang disematkan.

Jangan salahkan unduhan yang sudah dibersihkan sebagai deteksi dialek. Detektor otomatis memilih pembatas, bukan escape grammar. Pemisah catatan transfer, aturan kutipan, kebijakan baris baru, dan pengkodean yang andal, kemudian menguji sampel permusuhan sebelum data produksi dipindahkan.