|
|||||||||||||||||||||||||||||||||||||||||||||||||
Menu
Distributions (131)
bootable [55]
commercial [7] no-commercial [42] unclassified [20] [7]
Software (10844)
|
PHP (46) - Importujeme data do databázeJak dostat data do MySQL z externích zdrojů, třebas z desktopu? Pomocí PHP!
Jelikož byly předchozí dva díly našeho seriálu dost teoretické (pro někoho možná až příliš), ukážeme si dnes na něco, co budete potřebovat při práci s PHP a MySQL téměř určitě. A to bude import dat z cizích zdrojů do MySQL. Mějme například následující situaci: Firma provozuje podnikový informační systém na několika lokálních PC. Součástí systému je i ceník zboží. Firma má rovněž internetový obchod, běžící pod PHP a MySQL. A vtom někoho napadne, že by se ceník na internet dal nahrávat z toho lokálního systému. To je jasná výhoda; při změně cen (sortimentu…) stačí provést příslušné úpravy jen v jedné sadě dat, nemusí se to dělat vícekrát. Jsou to vlastně 3 problémy v jednom: data získat, nějak je zkopírovat na server a nakrmit je do databáze. Jaká data?Následující věc se vlastně naší problematiky skoro netýká. Ale abychom byli úplní, poradíme vám, že je žádoucí připravit exportovaná data v co NEJJEDNODUŠŠÍM, OTEVŘENÉM a (zejména pokud běží lokální infosystém na Windows) MULTIPLATFORMNÍM formátu. V praxi to bývají většinou textové soubory oddělené středníky či tabelátory. Téměř každý databázový systém má možnost exportovat data do textu; pokud jej nemá, dá se příslušný kus kódu napsat. Pozn.: V takovém případě buďte líní a
pokuste se to najít již hotové. Skoro určitě nejste první, kdo daný
problém řešil. Může nastat rovněž problém s kódováním, zejména pokud
text bude ve znakové sadě CP 1250 (Windows) a web na ISO-8859-2. Pokud mohu poradit – vyhněte se pokusu použít nějakou "transportní" databázi. Viděl jsem například řešení používající pro výměnu dat formát dbf. To může fungovat, protože PHP lze nastavit pro práci s dbf. Toto řešení má však rovněž poměrně významné nevýhody:
Pozn. Na druhou stranu textové soubory
mohou být skoro nepoužitelné, pokud jsou součástí exportovaných dat
rovněž binární data, třeba v případě, kdy jsou v databázi uloženy
obrázky. Další poměrně podstatnou výhodou je fakt, že textové soubory lze relativně snadno odkontrolovat a většinou se dají velice dobře komprimovat. Ke komprimaci byste měli použít gzip, protože PHP umí s tímto formátem bez problémů spolupracovat. Pozn.: Dají se najít nástroje pro
práci s gzipy i pod Windows. Některé jako freeware.Zcela úmyslně jsem
se nezmínil o fenoménu XML. Budeme mu věnovat
pozornost později
v tomto seriálu. Jak to dostat na server?Takže, v této fázi byste měli mít jeden nebo více textových souborů,
lépe ještě komprimovaných. Jejich přenos na server může a nemusí být
realizován pomocí PHP. Například se můžete rozhodnout použít FTP, SCP a
podobně. Ze zkušenosti ale vím, že je dobré mít k dispozici i náhradní
metodu (třeba, když potřebujete dostat data na server z počítače, na
němž nemáte k dispozici FTP klienta). Vzpomínáte si na díl seriálu o přenosu dat
na server? To je přesně ono. Za chvíli si to ukážeme celé v praxi. Pozn.: Možná budete chtít použít
nějaký jiný postup, který se dá snadněji spouštět pomocí cronu. Jak dostat data do databázeA to je to nejdůležitější. Máme textový soubor nebo soubory na
serveru a chceme je dostat do MySQL. Dobrá zpráva je, že na to existuje
v MySQL příkaz; špatná zpráva je, že v závislosti na použité verzi PHP
a/nebo MySQL tento příkaz nemusí fungovat. Takže si ukážeme dvě
varianty: LOAD DATA INFILE
K tomu všemu co bylo řečeno výše se vztahuje následující ukázka:
<? V tomto poněkud delším kódu jsou patrné dvě věci. Za prvé si
všimněte, že jsme sestavili a použili funkci ungzip. Ta funguje tak, že
vytvoří ze souboru něco.txt.gz soubor něco.txt. A příkaz LOAD DATA
INFILE se postará o zbytek. Ostatní části kódu jsou převzaty z dílu o
nahrávání dat na server. Ruční způsob
Ovšem má to i výhodu - před vlastním vložením dat můžeme provést
pomocí PHP nějaké výpočty nebo kontroly, což při použití LOAD DATA
INFILE většinou není možné. V takovém případě by se řádek s příkazem
LOAD DATA INFILE uvedený výše musel vyměnit za sadu příkazů, které
soubor rozdělí, načtou jednotlivé hodnoty do příkazu SQL a soustí jej. Závěr Vidíme, že importovat data do MySQL není zas až tak složité. Je
možné použít prakticky libovolné zdroje a pomocí konverze na texty
dosáhnout poměrně rychle kýženého výsledku. Pokud by import dat byl pro
běh webu závažný, měly by se naimportované hodnoty nějak odkontrolovat.
Více o tomto tématu bude řečeno v sesterském seriálu
o databázi MySQL.
Related article
PHP (1) - Historie a budoucnost PHP (2) - Jak to funguje PHP (3) - Instalace PHP (4) - Základy syntaxe PHP (5) - Příkaz Echo; formátování kódu PHP (6) - Typy proměnných PHP (7) - Pole PHP (8) - Výrazy, konstanty, inkrementace PHP (9) - Přetypování proměnných PHP (10) - Logické výrazy a operátory PHP (11) - Operátory porovnání; priorita operátorů PHP (12) - Podmínky PHP (13) - Příkazy cyklu PHP (14) - Cyklus for PHP (15) - Funkce PHP (16) - Vyrobme si kalendář PHP (17) - Dokončujeme kalendář PHP (18) - Funkce pro práci s poli PHP (19) - Objekty PHP (20) - Objekty podruhé PHP (21) - Vkládání souborů PHP (22) - Regulární výrazy PHP (23) - Neztraťte se ve funkcích PHP (24) - Pracujeme s formuláři PHP (25) - Formuláře - nikomu nevěřte PHP (26) - Formuláře na sto způsobů PHP (27) - Příklady na formuláře PHP (28) - Chybovati je lidské PHP (29) - Soubory a adresáře PHP (30) - Počitadlo pomocí souborů PHP (31) - Upload a download souborů PHP (32) - Příklad na BLOG PHP (33) - HTTP hlavičky PHP (34) - Úvod do databází PHP (35) - Uložení dat v databázi PHP (36) - Připojujeme se k MySQL PHP (37) - Tvorba tabulek v MySQL PHP (38) - Dolujeme data z MySQL PHP (39) - Zobrazujeme a stránkujeme data PHP (40) - PHP a vkládání záznamů do databází PHP (41) - Měníme data v databázích PHP (42) - Odstraňujeme databázová data PHP (43) - MySQL rychleji a rychleji PHP (44) - MySQL ještě rychleji PHP (45) - Jsou data v databázi v bezpečí? PHP (47) - Exportujeme data PHP (48) - Práce s binárními daty (BLOB) PHP (49) - Kam kráčíš, MySQL? PHP (50) - Ověřování uživatelů PHP (51) - Přenos dat mezi stránkami PHP (52) - Cookies PHP (53) - Sessions PHP (54) - Dodržování webových standardů PHP (55) - Odesílání e-mailů PHP (56) - Tisk a PDF PHP (57) - XML PHP (58) - XML lépe a radostněji PHP (59) - zapisujeme XML PHP (60) - Rozsáhlejší projekty 1. PHP (61) - Rozsáhlejší projekty 2. PHP (62) - Rozsáhlejší projekty 3. PHP (63) - Rozsáhlejší projekty 4. PHP (64) - Ladění kódu PHP (65) - Ladění kódu 2. PHP (66) - PHP debugger PHP (67) - Zdroje informací o PHP PHP (68) - Stavíme portál PHP (69) - Stavíme portál 2. PHP (70) - Registrace uživatelů na portálu PHP (71) - Přihlašování uživatelů na portál PHP (72) - Hrátky s uživateli PHP (73) - Frontend a backend PHP (74) - Administrátorské rozhraní portálu PHP (75) - Pokračujeme na portále PHP (76) - Zobrazujeme data na portále PHP (77) - Portál, databáze a relace PHP (78) - Informační obsah portálu PHP (79) - Triky s formuláři a ergonomie webu PHP (80) - Administrace diskografie hudebního portálu PHP (81) - Uživatel versus programátor PHP (82) - zabezpečení vstupů formulářů PHP (83) - Ukládání textů písní na hudebním portále PHP (84) - Ještě k registraci PHP (85) - ukládání souborů do databáze na portálu PHP (86) - zobrazení dat a stahování soborů pro registrované PHP (87) - finišujeme portál PHP (88) - provoz ve Windows PHP (89) - cesta do hlubin php.ini PHP (90) - Poťouchlé konfigurační volby PHP (91) - php.ini potřetí a naposledy PHP (92) - funkce pro interakci s operačním systémem PHP (93) - příkazový řádek PHP (94) - GUI PHP (95) - GUI podruhé PHP (96) - (ne)bezpečné PHP PHP (97) - bezpečnost ještě jednou PHP (98) - PHP 5. PHP (99) - Budoucnost PHP PHP (100) - Závěr PHP (101) - Apríl: Příklady z praxe php rewrite Byte order mark a PHP Previous Show category (serial) Next
|
Szukanie oprogramowania
|
|||||||||||||||||||||||||||||||||||||||||||||||
©Pavel Kysilka - 2003-2024 | maillinuxsoft.cz | Design: www.megadesign.cz |