Načrtovanje in razvoj spletnih aplikacij

Uvoz podatkov v podatkovno zbirko

Ko imamo podatkovno zbirko in tabelo že pripravljeno, lahko vanjo uvozimo začetne podatke. Pri tem pogosto uporabimo SQL datoteko, ki vsebuje enega ali več ukazov INSERT INTO.

Uvoz podatkov v tabelo

Podatke lahko v tabelo dodajamo ročno z ukazom INSERT INTO, pri večjem številu zapisov pa je pregledneje, da pripravimo ločeno SQL datoteko in jo nato uvozimo.

Osnovna sintaksa za vnos enega zapisa je:

INSERT INTO imeTabele (stolpec1, stolpec2, stolpec3)
VALUES (vrednost1, vrednost2, vrednost3);

Z enim ukazom lahko dodamo tudi več zapisov hkrati:

INSERT INTO imeTabele (stolpec1, stolpec2)
VALUES
(vrednost1a, vrednost2a),
(vrednost1b, vrednost2b),
(vrednost1c, vrednost2c);

Pri uvozu moramo paziti, da se podatki ujemajo s strukturo tabele, da je število stolpcev pravilno in da so vrednosti zapisane v ustreznih podatkovnih tipih.

Osnovni primer z mysqli

Spodnji zgled v tabelo knjige doda nekaj začetnih zapisov.

<?php
define('DB_SERVER', 'localhost');
define('DB_USER', 'uporabnik');
define('DB_PASS', 'skritoGeslo');
define('DB_NAME', 'knjiznica');

// Povezava do podatkovne zbirke
$connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);

// Preverjanje povezave
if (!$connection) {
    die(
        'Povezava s podatkovno zbirko ni vzpostavljena: ' .
        mysqli_connect_error() .
        ' (' . mysqli_connect_errno() . ')'
    );
}

// SQL ukaz za vstavljanje več zapisov
$sql = "INSERT INTO knjige (Priimek_avtorja, Ime_avtorja, Naslov, Strani, Cena, Leto)
VALUES
('Novak', 'Janez', 'Osnove podatkovnih baz', 220, 24.90, 2022),
('Kovač', 'Maja', 'Uvod v PHP', 180, 19.50, 2021),
('Horvat', 'Ana', 'Spletne aplikacije', 310, 29.99, 2023)";

// Izvedba ukaza
if (mysqli_query($connection, $sql)) {
    echo 'Podatki so bili uspešno uvoženi.';
} else {
    echo 'Napaka pri uvozu podatkov: ' . mysqli_error($connection);
}

// Zapiranje povezave
mysqli_close($connection);
?>

Osnovni primer s PDO

Tudi z vmesnikom PDO lahko izvedemo uvoz podatkov z ukazom INSERT INTO ali pa iz SQL datoteke preberemo več zaporednih SQL ukazov.

<?php
$streznik = 'localhost';
$baza = 'knjiznica';
$uporabnik = 'uporabnik';
$geslo = 'skritoGeslo';

try {
    // Povezava do podatkovne zbirke
    $pdo = new PDO("mysql:host=$streznik;dbname=$baza;charset=utf8mb4", $uporabnik, $geslo);

    // Vklop izjem pri napakah
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // SQL ukaz za vstavljanje podatkov
    $sql = "INSERT INTO knjige (Priimek_avtorja, Ime_avtorja, Naslov, Strani, Cena, Leto)
            VALUES
            ('Novak', 'Janez', 'Osnove podatkovnih baz', 220, 24.90, 2022),
            ('Kovač', 'Maja', 'Uvod v PHP', 180, 19.50, 2021),
            ('Horvat', 'Ana', 'Spletne aplikacije', 310, 29.99, 2023)";

    // Izvedba SQL ukaza
    $pdo->exec($sql);

    echo 'Podatki so bili uspešno uvoženi.';
}
catch (PDOException $e) {
    echo 'Napaka pri uvozu podatkov: ' . $e->getMessage();
}
?>

Pomembnosti pri uvozu podatkov

  • ime tabele mora biti pravilno zapisano,
  • število navedenih stolpcev se mora ujemati s številom vrednosti,
  • vrednosti morajo biti v pravilnem podatkovnem tipu,
  • besedilo zapisujemo v narekovajih, števila pa navadno brez njih,
  • pri večjem številu zapisov je pogosto pregledneje uporabiti SQL datoteko.

📘Aplikacija Knjige

V priloženi aplikaciji Knjige je v datoteki 04_uvozDB.php prikazan uvoz SQL strukture oziroma podatkov iz pripravljene datoteke knjige.sql v podatkovno zbirko aplikacije.

Funkcija za uvoz datoteko prebere po vrsticah, preskoči prazne vrstice in komentarje, nato pa posamezne zaključene SQL ukaze izvede prek PDO.

Primer: aplikacija Knjige – 04_uvozDB.php

Navodila za izdelavo aplikacije Knjige

  1. Najprej ustvarimo podatkovno zbirko in tabelo.
  2. Pripravimo SQL datoteko z ukazi za vnos podatkov.
  3. Določimo pot do datoteke, na primer knjige.sql.
  4. Datoteko preberemo po vrsticah in preskočimo prazne vrstice ter komentarje.
  5. Ko je SQL ukaz zaključen s podpičjem, ga izvedemo prek PDO metode exec().
  6. Na koncu uporabniku prikažemo, ali je bil uvoz uspešen, in izpišemo uporabljeno datoteko.

Pri učenju je smiselno poznati oba pristopa:

  • mysqli za neposreden vnos zapisov z ukazom INSERT INTO,
  • PDO za enostaven vnos ali izvedbo več SQL ukazov,
  • aplikacijski pristop, kjer podatke uvozimo iz ločene SQL datoteke.