Autor Zpráva
Will
Profil *
Dobrý den,


potřeboval bych se zeptat jestli jde nějakým způsobem naplnit mysql databázi daty z textového souboru.


Soubor.txt

1;pes;kočka
2;pes;kočka
3;pes;kočka
4;pes;kočka
5;pes;kočka


Mysql tabulka zvěř :

id - (primary key)
psy
kočky


Nějak to udělat přes jakýsi php script, aby se to všechno uložilo do db do správného řádku

---id---psy---kočky
1 pes kočka
2 pes kočka
3 pes kočka

Děkuji za všechny rady díky
ninja
Profil
Ano, jde to. Bud pres PHP skript, nebo to mozna pujde i rovnou v phpMyAdminu.

Jestli ma byt soucasti dotazu i jak to udelat, bylo by fajn napsat kam jste se zatim dostal. Protoze pokud chcete aby vam nekdo napsal cely kod, zaradte dotaz do sekce Prace a zakazky.
imploder
Profil
Určitě na to už něco existuje, zkus pohledat. Já jsem napsal funkci, co rozdělí záznam na položky podle oddělovacích znaků. Mohl bys to použít, jestli si to chceš naprogramovat.
tady
imploder
Profil
Jinak v PHPmyAdminu to je. Textová podoba databáze se nazývá dump a skládá se z příkazů na její vytvoření (buď jen struktura nebo i obsah). Tj. ne přímo textová tabulka.
imploder
Profil
  function words($string) { 
    $ri = 0; /* na první prvek v poli výsledků */
    $word = ""; /* vyprázdni slovo */
    for($si=0; $si < strlen($string); $si++) { 
      if(ord($string[$si]) < 59 || ord($string[$si]) > 59) $word .= $string[$si]; /* přidej znak do slova */ 
      else { /* středník (ASCII #59) */
        $result[$ri] = $word; $ri++; $word = ""; /* zapiš slovo a jdi na další */ 
      }
    }
    return $result; 
  }
  
  function zapis($soubor, $tabulka) { 
    if($f = fopen($soubor, "r")) {
      while($radek = fgets($f)) { 
        $polozky = words($radek);
        $query = "insert into $tabulka values (";
        for ($i = 0; isset($polozky[$i]); $i++) {
          $query .= "'".$polozky[$i]."'";
          if(isset($polozky[$i+1])) $query .= ", ";
        }
        $query .= ")"; /* výpis prováděných SQL příkazů */
        echo $query."<br />";
        mysql_query($query);
      }
      fclose($f);
    }
    else echo "soubor $soubor se nepodařilo otevřít";
  }

Funkce zapis() zapíše položky ze souboru $soubor do tabulky $tabulka. Soubor má tvar jako ve vašem příkladu, jenom je středník za každou položkou včetně poslední v záznamu, tedy:
1;pes;kočka;
2;pes;kočka;
3;pes;kočka;
4;pes;kočka;
5;pes;kočka;
5;pes;kočka;
Vypisuje to prováděné SQL. Jestli nechcete, aby se vypisovalo, stačí zakomentovat ten řádek.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: