PHP seriál - Import dat do databáze pomocí konzole
Pokračuji v načatém tématu a to databáze. Jelikož častým problémem je jak naimportovat velké množství dat do databází typu MySQL a import přes phpMyAdmin je omezen na velmi malé množství dat a také trvá neskutečně dlouho, přináším sem způsob, který používám já. Použijeme konzoli a příkaz mysql import…
Předpokládejme, že data máme v Excelovým souboru a potřebujeme je dostat do tabulky v databázi.
- Sloupce v tabulce musí mít stejný počet sloupců, jako tabulka v databázi, pokud nějaký sloupce chybí, musíme je doplnit
- Zachováme formát dat. Pokud máme sloupečky s datem, musíme mít stejný formát (YYYY-mm-dd)
- Buňky neobsahující nic nastavíme na nulovou hodnotu. Není to nutnost, ale vřele doporučuji
- Až máme tyto kroky hotové, tj stejný počet sloupečků, stejný formát dat a doplněné nulové hodnoty, uložíme si výstup do souboru typu csv, nejlépe oddělený pipami, protože středník se může objevit i v datech a zbytečně by docházelo k anomáliím.
- Takže máme soubor CSV. Pozor musí být stejného názvu, jako tabulka do které data budeme vkládat !!. Nyní pustíme konzoli.
- Převedeme kódování souboru do typu databáze (pokud již není shodné). Předpokládejme, že máme soubor psaný v českém kódování (windows-1250 a databáze je v Latin-2), potom napíšeme tento příkaz:
cstocs 1250 il2 /cesta_k_souboru.csv | sed s /\"//g > /cesta_kam_se_soubor_ulozi.txt
cstocs 1250 il2 /cesta_k_souboru.csv | sed s/\"//g > /cesta_kam_se_soubor_ulozi.txt
- provedeme import dat pomocí tohoto příkazu:
mysqlimport -v -u uzivatel -p --default-charset-set=latin2 --fields-terminated-by=\| cilova_databaze zdojovy_soubor.txt
mysqlimport -v -u uzivatel -p --default-character-set=latin2 --fields-terminated-by=\| cilova_databaze zdojovy_soubor.txt
- Nyní máme data naimportovaná. Někdy se ale může stát, že pokud poslední sloupec tabulky je textového typu (Char, Varchar atp.), tak se nám do něj doplní i konec řádku. Neboli je tam navíc \r. Proto doporučuji, máme-li poslední sloupec textový, aplikovat následující příkaz:
UPDATE tabulka_kam_sme_importovali SET posledni_sloupec=replace(posledni_sloupec, ‚\r‘, '');
UPDATE tabulka_kam_sme_importovali SET `posledni_sloupec`=replace(`posledni_sloupec`, "\r", "");
Nyní již by mělo být vše OK. Tento manuál slouží především pro mé
potřeby, ale tak nsad tím někomu také pomohu. Pokud máte nějaké dotazy,
jsou zde komentáře 
««« Předchozí text: První láska, první políbení, jenže potom uplyne čas a vše je jinak Následující text: PHP seriál - Hiearchické (stromové) zobrazování záznamů - díl 1. »»»
autor: Honzííík |
Úterý 4. 03. 2008, 10.50 | tisk | PHP |
3 komentáře | 1038x
Komentáře k textu
Rss komentářů tohoto textu - Formulář pro nový komentář
Henry Kissinger~ The great tragedies of history occur not when right confronts wrong but when two rights confront each other.
<a href=„http://www.dressesstore.co.uk“>evening gowns</a> <a href=„http://www.dressesstore.co.uk“>long evening dresses</a> <a href=„http://www.dressesstore.co.uk“>evening dresses cheap</a> <a href=„http://www.dressesstore.co.uk“>evening gowns</a> <a href=„http://www.dressesstore.co.uk“>evening dresses on sale</a>
[url=http://www.dressesstore.co.uk]evening gowns[/url] [url=http://www.dressesstore.co.uk]long evening dresses[/url] [url=http://www.dressesstore.co.uk]evening dresses cheap[/url] [url=http://www.dressesstore.co.uk]evening gowns[/url] [url=http://www.dressesstore.co.uk]evening dresses on sale[/url]
Stručně o mně
Nové komentáře
Online 5 lidíVydané články
PHP seriálALBION Group