Michal Čihař - Archive for Feb. 25, 2008

Gammu test version 1.18.91

New Gammu testing version is out. This time release period is a bit longer than usual, mostly because my moving back to Prague. 1.18.91 again only fixes some bugs:

  • Improve debug messages when connecting to phone (bug #508).
  • Fixed handling of some charsets in AT engine (bug #525).
  • Identify more Nokia phones (thanks to Iván Gabriel).
  • Fixed regression with DKU2 cables on Windows (bug #533).

You can download from usual place: http://cihar.com/gammu/.

PS: Debian users can get packages from experimental.

Import dat

Občas do databáze potřebujeme také nahrát data získaná v jiných programech. I pro tuto možnost phpMyAdmin nabízí podporu ve svém rozhraní, ale pokud budete potřebovat pracovat s většími objemy dat, je lepší použít některé nástroje pro příkazovou řádku.

Množství formátů pro import není ani zdaleka tak rozsáhlé jako u možností pro export  – phpMyAdmin podporuje import jen pro CSV, SQL a DocSQL soubory. Stejně tak jako u exportu ale máte možnost si napsat vlastní modul pro práci s vaším souborovým formátem, rozhraní pro moduly je podobné jako u  exportních modulů .

Omezení

Protože zpracování dat dochází na straně web serveru a data jsou přenášena přes HTTP, může u velkých objemů dat dojít k vypršení různých časových limitů. Limit běhu PHP (pokud to nastavení PHP umožňuje, například v safe mode to není možné) můžete nastavit pomocí proměnné $cfg['ExecTimeLimit'] . Nastavením na nulu omezení doby času běhu PHP odstraníme úplně. Nicméně pořád ještě může vypršet časový limit HTTP přenosu, který nemůžeme nijak ovlivnit.

Další omezení je velikost nahraného souboru. Toto upravují parametry upload_max_filesize a post_max_size v nastaveních PHP (soubor php.ini nebo případně .htaccess s lokálním nastavením pro některé adresáře). Oba tyto parametry omezují maximální velikost souboru, který lze na server nahrát. Vše výše zmíněné předpokládá povolení nahrávání souborů pomocí direktivy file_uploads .

Poslední omezení na které můžeme narazit je velikosti použité paměti. To je možné opět nastavit v phpMyAdminovi pomocí proměnné $cfg['MemoryLimit'] .

Jak zpracovat velké soubory

Pokud přes phpMyAdmina potřebujeme pracovat s velkými soubory, máme přes popsaná omezení několik možností.

Nejpohodlnější je nahrát soubor na server jinou cestou a v phpMyAdminovi povolit načítání souborů pro import ze serveru:

 
  $cfg['UploadDir'] = './upload';
 

Nyní nám phpMyAdmin nabídne na stránce pro import i soubory uložené v tomto adresáři a tímto se vyhneme problémům s HTTP přenosem. Ale pořád zůstávají omezení na spotřebovanou paměť a dobu běhu PHP.

Tyto omezení můžeme obejít částečným importováním souboru dokud ho nezpracujeme celý. Pokud je povolen částečný import phpMyAdmin se snaží předem detekovat situaci kdy by došlo k dosažení těchto limitů a pokud toto hrozí import se přeruší. Opětovným odesláním formuláře bude import pokračovat od poslední zpracované pozice. V případě že jsme soubor nahrávali přes HTTP musíme však soubor nahrát znovu.

Formáty dat

Pro všechny formáty je možné vybrat znakovou sadu, ve které je soubor a phpMyAdmin automaticky rozezná případnou kompresi souborů (gzip, bzip2 a zip, ale záleží na tom co vaše PHP podporuje).

SQL

SQL export asi není třeba rozebírat, jen je možné nastavit režim kompatibility, v jakém se bude dotaz provávět.

CSV

Do jednotlivých tabulek je možné nahrávat data z CSV souborů (tento import tedy funguje jen pro jednotlivé tabulky a ne pro celou databázi). U CSV importu je možné nastavit řadu parametrů určující jak je soubor formátován (oddělovače sloupců, řádků a podobně). Pokud to MySQL server povoluje, je možné také kromě parseru v phpMyAdminovi použít příkaz MySQL LOAD DATA . Tato volba je obvykle rychlejší, ale nenabízí tolik možností ovlivnění běhu a v některých konfiguracích MySQL serveru ji nelze použít.

DocSQL

Toto je dnes již poměrně historický formát pro popis tabulek a phpMyAdmin umí podle tohoto popisu tabulky vytvořit. Protože se jedná o vytváření tabulek, tento import je dostupný jen pro databázi.