DB lentelės CSV failo konvertavimas į SQLite duomenų bazę
Paprastų teksto failų konvertavimas į struktūrizuotas reliacines duomenų bazes leidžia vykdyti greitas užklausas ir valdyti sudėtingus duomenų ryšius.
Formatų palyginimas ir techninės specifikacijos
| Specifikacija | CSV | SQLITE |
|---|---|---|
| MIME tipas | text/csv | application/vnd.sqlite3 |
| Tipas | tabular data | embedded relational database |
| Glaudinimas | none | B-Tree page allocation |
| Standartinė specifikacija | IETF RFC 4180 | SQLite Database File Format 3 |
| Maginės baitų antraštės (Magic Bytes) | RFC 4180 delimiter stream | 53 51 4C 69 74 65 20 66 6F 72 6D 61 74 20 33 00 (SQLite format 3\0) |
Formato apžvalga ir taikymas
Kableliais atskirtų reikšmių (CSV) failai puikiai tinka paprastam eksportui ir mažiems sąrašams, tačiau jiems sunku apdoroti milijonus eilučių arba kelias susietas lenteles. Augant duomenų rinkiniams, plokščiam tekstui reikia nuskaityti visą failą iš disko tik tam, kad būtų rasta viena užklausa. Programuotojams ir duomenų analitikams dažnai prireikia perkelti lentelinius įrašus į reliacinį formatą, siekiant pagreitinti paiešką ir užtikrinti duomenų tipų teisingumą. Informacijos perkėlimas į įterptąją reliacinę duomenų bazę paverčia statinį tekstą aktyvia duomenų saugykla. Programos darbalaukio ir mobiliosiose platformose skaito šį formatą gimtąja forma be atskiro serverio proceso. Šis konvertavimas įgalina greitą indeksavimą, filtruotas paieškas ir saugius atnaujinimus iš naujo neperrašant viso failo kiekvieną kartą, kai pasikeičia vos viena eilutė.
Techninės specifikacijos ir kodekų apžvalga
Tekstinis eksportas naudoja „text/csv" MIME tipą, saugodamas duomenis kaip paprastus ASCII arba UTF-8 simbolius, atskirtus kableliais ir naujomis eilutėmis be jokių „magic bytes" ar failo antraščių. „SQLite" naudoja „application/vnd.sqlite3" MIME tipą ir prasideda tikra 16 baitų „magic header" eilute „SQLite format 3\000". Konteinerio viduje duomenys organizuojami naudojant B-medžio (B-Tree) puslapių paskirstymą, padalijant failą į fiksuoto dydžio puslapius, kurie grupuoja lentelės eilutes ir indeksavimo raktus efektyviam paėmimui. Šis konvertavimas yra griežtai nuostolingas, nes kiekviena teksto reikšmė, sveikasis skaičius ir slankiojo kablelio skaičius tiesiogiai susiejami su apibrėžtais duomenų bazės stulpeliais.
OS ir naršyklės suderinamumas
„SQLite" failai gimtąja forma atsidaro „Windows", „macOS", „Linux", „Android" ir „iOS" sistemose per integruotas sistemos bibliotekas ir komandinės eilutės įrankius. Šiuolaikinės žiniatinklio naršyklės taip pat gali vietiniu lygiu skaityti ir užklausti šias duomenų bazes, naudodamos „WebAssembly" variklio kompiliaciją. CSV teksto failai dalijasi universaliu suderinamumu su teksto redaktoriais ir skaičiuoklių programomis, tačiau neturi integruotų užklausų apdorojimo galimybių visose platformose.
💡 Naudinga informacija
Konversijos metu visada apibrėžkite aiškius duomenų tipus, tokius kaip INTEGER ir REAL, vietoj to, kad kiekvieną stulpelį saugotumėte kaip TEXT, nes tai padės išlaikyti mažesnius duomenų bazės failus ir užtikrins greitesnį užklausų vykdymą.
Formatų palyginimas ir techninės specifikacijos
50 MB CSV teksto failas atsisiunčiamas per maždaug 10 sekundžių naudojant standartinį 4G ryšį, per 2 sekundes per 5G ir greičiau nei per sekundę per šviesolaidį. Konvertavus į indeksuotą duomenų bazę, gaunamas failo dydis dažnai šiek tiek sumažėja dėl dvejetainio pakavimo, o užklausų vykdymo laikas sumažėja nuo sekundžių iki milisekundžių.
Dažnai užduodami klausimai
Kaip konvertuoti DB lentelės CSV į SQLite duomenų bazę neprarandant kokybės?
Konversija yra 100 procentų nuostolinga. Kiekviena eilutė, skaičius ir tekstinė eilutė iš teksto failo patenka tiesiai į duomenų bazės lentelės stulpelius, nepakeičiant jokio skaitmeninio tikslumo ar teksto simbolių.
Kuo skiriasi DB lentelės CSV ir SQLite duomenų bazė?
CSV failas yra plokščias, neindeksuotas teksto dokumentas, kurio kiekvieną eilutę reikia nuskaityti nuo viršaus iki apačios. „SQLite" duomenų bazė yra struktūrizuotas dvejetainis failas, kuris naudoja B-medžio puslapius ir indeksus specifiniams įrašams akimirksniu surasti.