maja 31

Import bazy danych z pliku kopii zapasowej w PHP

Tag: MySQL, PHPMatheW @ 0:34. . Post odwiedzany 2643 razy. Trackback

Kiedyś potrzebny był mi mały parser SQL, który umozliwiał mi import zapisanej w pliku kopii bazy danych. Zrobiłem sobie taką rzecz i pomyślałem, że komuś może się przydać. U mnie działa i raczej błędów być nie powinno.

Generalnie funkcja z danego uchwytu do pliku pobiera linię po linii, omija komentarze (czyli linie po #), przyjmuje wieloliniowe instrukcje (czeka aż na końcu linii pojawi sie średnik). Sprawdzana z plikami eksportowanymi przez phpmyadmin i eksporter w Code Igniter.

PHP:
  1. /*
  2. * @author Mateusz 'MatheW' Wójcik http://mwojcik.pl - uszanuj autora i pozostaw komentarz
  3. * @param resource $uchwyt
  4. */
  5. function importSQL($uchwyt) {
  6.   while (!feof($uchwyt)) {
  7.     $wiersz = trim(fgets($uchwyt));
  8.     if(substr($wiersz, 0, 1)=='#' or empty($wiersz)) continue;
  9.     if(substr($wiersz, -1, 1)!=';') {
  10.       while (!feof($uchwyt)) {
  11.         $w=trim(fgets($uchwyt));
  12.         if(substr($w, 0, 1)=='#' or empty($w)) continue;
  13.         if(substr($w, -1, 1)!=';') $wiersz.=' '.$w;
  14.         else {
  15.           $wiersz.=' '.$w;
  16.           break;
  17.         }
  18.       }
  19.      }
  20.   mysql_query($wiersz); #tu mozna zmienic na wybrany sterownik bazy
  21.   }
  22.           
  23. }

Przykład użycia:

PHP:
  1. $uchwyt=fopen('baza.sql', 'r');
  2. importSQL($uchwyt);

Podobne wpisy

Dodaj do: Dodaj do del.icio.us Dodaj do Wykop.pl Dodaj do Google Reader lub Google IG
Licencja: Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Bez utworów zależnych 2.5 Polska.

Zostaw komentarz