Načrtovanje in razvoj spletnih aplikacij

Uvoz podatkov - LOAD DATA

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 \n ali \r\n za 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.