CSV — jadval ko‘rinishidagi ma’lumotni oddiy matnda satr va ustunlarga ajratib saqlaydigan format. To‘liq nomi Comma-Separated Values. Har satr odatda bitta recordni, record ichidagi ajratilgan qiymatlar esa ustunlarni ifodalaydi.
Nomida vergul mavjud bo‘lsa ham amaliyotda semicolon, tab yoki boshqa delimiter ishlatiladigan variantlar ham uchraydi. Shu sababli parser delimiter, quote va encoding qoidalarini aniq bilishi kerak.
Oddiy tuzilma
Misol:
id,name,active
1,Farrukh,true
2,UzbekDevs,true
Birinchi satr header bo‘lishi mumkin.
Keyingi satrlar ayni ustun tartibiga mos recordlar.
CSV formatining o‘zi header majburiyligini belgilamaydi.
Delimiter
Fieldlar delimiter bilan ajratiladi.
Keng tarqalgan delimiterlar:
- vergul;
- semicolon;
- tab;
- pipe.
Regional son formatida vergul decimal separator bo‘lsa semicolon ishlatilishi mumkin.
Fayl extensioni .csv bo‘lsa ham delimiter avtomatik ma’lum bo‘lmasligi ehtimoli bor.
Quote
Field ichida delimiter, yangi qator yoki quote mavjud bo‘lsa field odatda qo‘shtirnoq bilan o‘raladi:
1,"Sherkulov, Farrukh","Developer"
Quote ichidagi qo‘shtirnoq ko‘pincha ikki marta yoziladi:
1,"U ""Master"" deb ataladi"
Parser oddiy split(",") bilan to‘g‘ri ishlamaydi.
Ko‘p qatorli field
Quoted field ichida yangi qator bo‘lishi mumkin:
id,description
1,"Birinchi qator
Ikkinchi qator"
Satr bo‘yicha qo‘lda o‘qish bunday recordni buzishi mumkin.
CSV library quote state’ni saqlab parse qiladi.
Header
Header ustun nomlarini beradi:
user_id,full_name,created_at
Header afzalligi:
- field ma’nosi;
- tartib o‘zgarishiga mos mapping;
- import validation;
- column selection.
Duplicate yoki bo‘sh headerlar importda rad etilishi mumkin.
Data type
CSV barcha qiymatni matn sifatida ifodalaydi.
15, true, 2026-07-14 yoki bo‘sh fieldning aniq type’i schema orqali belgilanadi.
Parser avtomatik type inference qilsa:
- boshlang‘ich nol;
- katta ID;
- sana;
- scientific notation
noto‘g‘ri talqin qilinishi mumkin.
Bo‘sh qiymat
Quyidagi holatlar farq qilishi mumkin:
a,,c
a,"",c
Ikkalasi ham bo‘sh string sifatida talqin qilinishi mumkin, lekin application null va empty stringni alohida ko‘rishi ehtimoli bor.
CSVning o‘zi universal null belgisi bermaydi.
Encoding
UTF-8 zamonaviy tizimlar uchun keng tarqalgan.
Ammo eski fayllar boshqa encodingda bo‘lishi mumkin.
Noto‘g‘ri encoding o‘zbek harflari va boshqa Unicode belgilarini buzadi.
Encoding metadata CSV ichida majburiy berilmaydi.
Byte Order Mark
Ayrim dasturlar UTF-8 CSV boshiga BOM qo‘shadi.
Parser birinchi header nomiga BOM belgisi qo‘shib yubormasligi kerak.
Boshqa vositalar BOMni encoding signali sifatida ishlatadi.
Interoperability test qilinadi.
Line ending
Satr yakuni platformaga qarab:
- LF;
- CRLF;
- tarixiy CR
bo‘lishi mumkin.
CSV parser quote ichidagi newline va record newline’ni farqlashi kerak.
Exportda target tizim talabiga mos line ending tanlanadi.
Streaming
Katta CSV to‘liq memory’ga yuklanmasdan recordma-record o‘qilishi mumkin.
Streaming import:
uchun qulay.
Biroq transaction va partial import siyosati aniq bo‘lishi kerak.
Validation
Import vaqtida tekshiriladi:
- header;
- ustun soni;
- required field;
- data type;
- uzunlik;
- duplicate ID;
- foreign key;
- encoding;
- maksimal record.
Sintaksis to‘g‘ri CSV business jihatdan to‘g‘ri data degani emas.
CSV Injection
Spreadsheet dasturlari =, +, - yoki @ bilan boshlangan fieldni formula deb talqin qilishi mumkin.
Attacker eksport qilingan qiymatga formula joylashtirsa user faylni ochganda xavfli operation yoki tashqi request yuz berishi mumkin.
Untrusted field spreadsheet uchun xavfsiz tarzda neutralizatsiya qilinadi.
Import xavfi
Juda katta yoki maxsus CSV:
- memory exhaustion;
- disk to‘lishi;
- juda uzun field;
- ko‘p column;
- nested quote;
- encoding xatosi
yaratishi mumkin.
File hajmi, field uzunligi va record soni cheklanadi.
Export
Exportda column tartibi va format contract sifatida belgilanadi.
Sana timezone bilan, decimal invariant formatda, ID scientific notationga aylanmaydigan ko‘rinishda yoziladi.
Excel yoki boshqa spreadsheet uchun alohida compatibility talabi bo‘lishi mumkin.
CSV va TSV
TSV tab bilan ajratilgan qiymatlardan foydalanadi.
Tab matnda vergulga qaraganda kamroq uchrashi mumkin.
Ammo field ichida tab yoki yangi qator bo‘lsa quote qoidasi baribir kerak.
Fayl formatini faqat extensionga qarab taxmin qilmaslik kerak.
CSV va JSON
CSV tekis jadval uchun ixcham.
JSON nested obyekt, array va type structure’ni yaxshiroq ifodalaydi.
CSV:
- analytics export;
- spreadsheet;
- bulk import;
- relational table
uchun qulay.
Nested data CSVda ko‘p fayl yoki custom encoding talab qiladi.
Formula va raqamni saqlash
Spreadsheet katta ID, telefon raqami yoki boshlang‘ich nolli kodni son sifatida talqin qilishi mumkin. Masalan, 00125 qiymati 125ga aylanishi yoki uzun identifikator scientific notationda ko‘rinishi ehtimoli bor. Export contract bunday ustunlarni text sifatida belgilaydi. Import esa spreadsheet ko‘rsatgan qiymatni emas, asl CSV byte’larini tekshiradi.
Qisman import
Bir record xato bo‘lsa butun fayl rollback qilinishi yoki faqat noto‘g‘ri satrlar rad etilishi mumkin. Natija hisobotida satr raqami, ustun va sabab ko‘rsatiladi. Qisman import duplicate retry va referential integrity bilan muvofiqlashtiriladi.
Bog‘liq tushunchalar
Comma-Separated Values, Delimiter, Header, Record, Field, TSV, Data import, Data export, CSV Injection, Encoding, Spreadsheet