Data & hamparan · CSV Pembersih
Mengapa Rentetan Kosong, NULL dan Medan Hilang Bukan Perkara yang Sama dalam CSV
· Mengapa ia penting
csv json format data
CSV tidak mempunyai cara untuk mengatakan 'tiada nilai'; ia sahaja mempunyai teks. Siaran ini menerangkan cara medan kosong, rentetan kosong yang dipetik, NULL literal dan baris pendek berbeza, sebab pemuat tidak bersetuju tentangnya dan cara penukaran kepada JSON memaksa soalan.
Sel kosong yang sama menjadi NULL dalam satu sistem dan rentetan kosong dalam sistem lain — sebab perubahan itu bergabung, mengira dan purata
Sel sumber yang kelihatan kosong boleh membawa beberapa sejarah, tetapi output JSON ToolAcre sengaja mengecilkannya kepada satu perwakilan. Medan kosong, medan kosong yang dipetik dan baris pendek yang dilapisi oleh penghurai semuanya menjadi rentetan kosong di bawah kekunci sekarang. Tiada null disimpulkan daripada rupa.
Konsistensi itu berguna sahaja apabila pengguna mengetahuinya. Ujian kod khusus untuk null tidak akan menggantikan lalai untuk "". Tentukan kontrak nilai hilang di sempadan penerima dan bukannya menganggap penukar mengekalkan perbezaan yang CSV sintaks atau model penghuraian pilihannya tidak dikekalkan.
Dalam ToolAcre, sel kosong dan sel hilang berlapik kedua-duanya menjadi rentetan kosong melainkan pengguna menafsirkannya semula
CSV boleh mengandungi dua pembatas tanpa apa-apa di antaranya, rentetan kosong yang dipetik secara eksplisit, teks literal seperti NULL atau NA dan baris yang berakhir sebelum lebar pengepala. ToolAcre menghuraikan dua yang pertama sebagai rentetan kosong dan membiarkan token literal tidak disentuh sebagai teks biasa.
Untuk barisan pendek, ia mengeluarkan amaran `RAGGED_ROW` dan menyalut sel mengekor yang tiada dengan rentetan kosong. Untuk baris yang panjang, ia mengekalkan sel tambahan dalam jadual, tetapi JSON penukaran tidak mempunyai kunci pengepala untuknya dan meninggalkannya. Asimetri inilah sebab amaran struktur memerlukan tindakan sebelum penukaran.
Cara pemuat biasa mentafsir setiap satu — lalai yang berbeza dalam hamparan, pangkalan data dan perpustakaan bingkai data
Pelanggan pangkalan data dan perpustakaan analisis yang berbeza mendedahkan token nol boleh dikonfigurasikan dan dasar medan kosong mereka sendiri. Repositori ini tidak boleh menetapkan lalai tersebut, jadi artikel itu tidak mendakwa bahawa semua hamparan atau pemuat bersetuju. Ia mendokumenkan satu pelaksanaan yang sumber dan ujiannya tersedia.
Apabila menyerahkan fail kepada sistem lain, baca tetapan pengimport itu dan buat lekapan untuk ``, `""`, NULL dan baris pendek. Kontrak yang boleh dipercayai ditunjukkan di sempadan sebenar. Cerita rakyat umum tentang maksud "CSV biasanya" terlalu lemah untuk tiada nilai.
Lalai pemuat berbeza-beza; artikel ini mendokumenkan ToolAcre daripada menyamaratakan tingkah laku hamparan atau pangkalan data
Teks NULL amat berbahaya kerana ia boleh menjadi kandungan tulen atau pengawal pengirim. ToolAcre tidak mempunyai senarai sentinel yang dikonfigurasikan dan oleh itu mengekalkannya sebagai rentetan empat aksara "NULL". Perkara yang sama berlaku untuk NA, N/A, sifar dan sebarang token lain yang mungkin digunakan oleh pengeluar.
Jangan gantikan rentetan sedemikian secara global tanpa peraturan khusus medan. Lajur nota boleh mengandungi "NULL" secara sah, dan lajur kod boleh menggunakan NA. Selesaikan makna dengan dokumentasi pengeluar atau skema, kemudian ubah sahaja lajur yang sesuai dalam semakan.
JSON membuat anda membuat keputusan — nol, rentetan kosong dan kunci tidak hadir ialah tiga perkara berbeza sebaik sahaja fail ditukar
JSON membezakan null, rentetan kosong dan sifat tidak hadir, tetapi ToolAcre memilih kekunci hadir dengan nilai rentetan untuk setiap lajur pengepala. Sel yang hilang atau empuk menjadi "". Penukar tidak menghasilkan JSON null dan tidak meninggalkan kunci sahaja kerana sel kosong.
Sel lebihan adalah berbeza: tanpa pengepala yang sepadan, tiada kunci untuk ditetapkan, jadi ia tidak hadir daripada objek yang dijana. Amaran baris memberitahu anda bahawa kerugian adalah mungkin. Betulkan pengepala atau lebar baris sebelum memuat turun dan bukannya membaca ketiadaan sebagai dasar batal yang bermakna.
ToolAcre mengeluarkan rentetan kosong dan kemukakan kekunci, bukan kekunci batal atau tiada
Gunakan id pengepala, nota, kod dan empat rekod: `1,,A`, `2,"",NULL`, `3,hello` dan `4,world,B,extra`. Dua tidak pertama menjadi rentetan kosong; kod dalam baris dua kekal "NULL". Baris tiga menerima kod "" selepas pelapik, manakala baris empat memberi amaran bahawa sel tambahan tidak mempunyai kunci.
Objek yang terhasil jelas membawa tiga kekunci yang sama untuk lajur yang diwakili. Kes yang berfungsi ini lebih bermaklumat daripada tangkapan skrin sel kosong kerana ia menghubungkan amaran hurai kepada bentuk JSON. Ia juga menunjukkan sebab token literal memerlukan keputusan domain yang berasingan.
Perkara yang tidak dilindungi ini — imputasi dan peraturan perniagaan untuk nilai yang hilang harus lalai
Imputasi berada di luar laluan. Penukar tidak mengisi harga yang hilang, menyalin nilai sebelumnya atau membuat kesimpulan lalai daripada baris jiran. Perubahan tersebut bergantung pada makna perniagaan dan sepatutnya berlaku selepas skema membezakan nilai yang tidak diketahui, tidak boleh digunakan dan kosong dengan sengaja.
Ia juga tidak mengekalkan perbezaan sintaksis antara medan kosong yang tidak dipetik dan `""`; kedua-duanya menghuraikan kepada rentetan sel yang sama. Jika perbezaan itu penting, CSV tidak membawanya melalui model jadual penghurai ini. Pilih perwakilan dengan keadaan eksplisit atau kekalkan sumber mentah bersama data terbitan.
Tentukan maksud kosong sebelum anda memuatkan — bagaimana penukaran ToolAcre CSV Cleaner CSV-ke-JSON menjadikan perwakilan kelihatan
Tentukan maksud kosong sebelum memuatkan JSON ke dalam kod yang ditaip. ToolAcre memberikan garis dasar yang telus: nilai rentetan di mana-mana, rentetan kosong untuk sel yang diwakili hilang, perkataan sentinel literal tidak berubah dan amaran apabila bentuk baris melebihi kekunci yang tersedia.
Periksa amaran tersebut dan dokumentasikan sebarang paksaan kemudian. Penukar tidak boleh mencipta semantik nilai hilang daripada teks sahaja, tetapi ia boleh mengelak daripada menyembunyikan pilihannya sendiri. Tingkah laku yang boleh diramal itu menjadikan sempadan seterusnya bertanggungjawab ke atas dasar yang sebenarnya layak untuk dikuatkuasakan.