2010-04-28 14 views
8

Piszę skrypt PHP do generowania zrzutów SQL z mojej bazy danych dla celów kontroli wersji. Zrzuca on już strukturę danych za pomocą odpowiedniego zapytania: SHOW CREATE ..... Teraz chcę sam zrzucić dane, ale nie jestem pewien co do najlepszej metody. Moje wymagania to:Generowanie zrzutu danych MySQL w języku SQL z PHP

  • muszę rekord w każdym wierszu
  • Wiersze muszą być klasyfikowane według klucza podstawowego
  • SQL musi być poprawny i dokładny bez względu na typ danych (liczby całkowite, ciągi, dane binarne ...)
  • Zrzuca powinny być identyczne, gdy dane nie zmieniły

mogę wykryć i uruchomić mysqldump jako zewnętrznego polecenia, ale to dodaje dodatkowy wymóg systemu i muszę analizować dane wyjściowe w celu usunięcia nagłówków i stopki z informacjami o zrzutach, których nie potrzebuję (takimi jak wersja serwera lub data zrzutu). Chciałbym, aby mój skrypt był tak prosty, jak to tylko możliwe, aby mógł być trzymany w oddzielnym pliku.

Jakie są moje alternatywy?

+0

Tymczasem staram pokaz indeksu i mysql_real_escape_string() –

+0

mysqldump naprawdę nie dodać dodatkowe wymagania systemowe, jest dostarczany z mySQL. –

+0

Tak więc mysqldump dodaje MySQL jako wymaganie systemowe. Większość programistów nie ma lokalnego serwera: łączy się ze wspólnym serwerem w sieci LAN. –

Odpowiedz

1

Myślę, że parsowanie wyniku mysqldump jest nadal najłatwiejsze. Sądzę, że istnieje naprawdę niewiele meta-danych, które musisz wykluczyć, a więc ich upuszczenie powinno być tylko kilkoma liniami kodu.

Można również spojrzeć na następujących opcji mysqdump: --tab, --compact

0

Zawsze można wypróbować funkcję system(). Mam nadzieję, że jesteś w Linuksie :)

+1

Istnieją systemy poza Linuksem :) –

0

„select * from tablename zamówienie przez klucz podstawowy” można uzyskać nazwy tabeli z bazy danych information_schema lub „show tabele "polecenia. Ponadto można uzyskać klucz podstawowy z „występów indeksów z nazwa-tabeli” a następnie pętli i stworzyć INSERT ciągi

Powiązane problemy