Podatke lahko uvozimo s pomočjo grafičnega vmesnika phpMyAdmin ali pa z ukazom LOAD DATA. Ta ukaz je uporaben predvsem takrat, ko želimo v tabelo hitro uvoziti večje število zapisov iz besedilne datoteke.
Osnovna sintaksa
LOAD DATA [LOCAL] INFILE 'ime_datoteke'
INTO TABLE ime_tabele
[CHARACTER SET utf8mb4]
[FIELDS TERMINATED BY 'ločilo_polj']
[LINES TERMINATED BY 'ločilo_vrstic']
[IGNORE število LINES];
Najpomembnejši deli ukaza so:
INFILE– določa datoteko, iz katere uvažamo podatke,INTO TABLE– določa tabelo, v katero uvažamo podatke,CHARACTER SET– določa nabor znakov,FIELDS TERMINATED BY– določa ločilo med polji,LINES TERMINATED BY– določa ločilo med vrsticami,IGNORE 1 LINES– preskoči prvo vrstico, če vsebuje naslove stolpcev.
Pot do datoteke
Pri polni poti do datoteke lahko uporabimo zapis z dvojnimi poševnicami ali z navadnimi poševnicami:
'D:\\vaje\\podatki.txt'
ali
'D:/vaje/podatki.txt'
Če uporabljamo LOAD DATA INFILE brez besede LOCAL, mora biti datoteka dostopna strežniku podatkovne baze. Če uporabljamo LOAD DATA LOCAL INFILE, se datoteka bere z odjemalčevega računalnika.
Nabor znakov
Pri besedilnih datotekah je priporočljivo uporabiti utf8mb4, saj pravilno podpira šumnike in druge znake Unicode.
Ločila polj in vrstic
Ločilo_polj in ločilo_vrstic sta odvisna od datoteke, ki jo uvažamo. Pogosto uporabljamo:
- vejico
,pri datotekah CSV, - podpičje
;, - tabulator
\t, - novo vrstico
\nali\r\nza konec vrstice.
Primer uvoza podatkov
V naslednjem primeru uvozimo podatke v tabelo drzave iz datoteke drzave.txt:
LOAD DATA LOCAL INFILE 'D:/vaje/drzave.txt'
INTO TABLE drzave
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\n';
Če ima datoteka v prvi vrstici imena stolpcev, uporabimo:
LOAD DATA LOCAL INFILE 'D:/vaje/drzave.txt'
INTO TABLE drzave
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
Primer za datoteko CSV
Če ima datoteka polja ločena z vejico, je primer lahko takšen:
LOAD DATA LOCAL INFILE 'D:/vaje/uporabniki.csv'
INTO TABLE uporabniki
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;
Uvoz z ukazom LOAD DATA LOCAL INFILE je lahko iz varnostnih razlogov včasih onemogočen. V takem primeru lahko podatke uvozimo prek phpMyAdmin ali pa omogočimo ustrezne nastavitve v strežniku in odjemalcu.