Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Zapytania z pliku
Forum PHP.pl > Forum > PHP
DarkItachiPL
Witam... Od dłuższego czasu poszukuję skryptu który pozwolił by wgrać do bazy 1689 z pliku .sql znajdującego się w folderze ze skryptem... Pomoże ktoś? Byłbym bardzo wdzięczny ;]
artega
Przydałaby się jeszcze wzmianka co dokładnie chcesz "wgrać". Liczba 1689 raczej wiele nie mówi. Popatrz tutaj być może to rozwiązanie, którego szukasz winksmiley.jpg
DarkItachiPL
Tzn. sorki wczoraj mnie głowa bolała i zapomniałem dopisać wstydnis.gif

Chodziło mi o taką ilość linijek, a w tym pliku są zapytania z tabelkami i insertami...
  1. <?php
  2. $sql_file = [url="http://www.php.net/File"]file[/url]('coyote.sql'); // odczytaj plik do tablicy (jedna linia = jeden element tablicy)
  3.  
  4. for ($i=0; $i<count($sql_file); $i++)
  5. {
  6.  /* analiza kazdej linii polega na sprawdzeniu, czy nie zaczyna sie ona od znaku #
    , co oznacza komentarz (nalezy to usunac). Jezeli nie - do zmiennej $sql_commands dodajemy reszte zawartosci komend SQL */
     
  7. if ($sql_file[$i][0] != "#")
  8.  {
  9. $sql_commands .= $sql_file[$i];
  10.  }
  11.  
  12. }
  13. // na podstawie znaku ; okreslajacego koniec komendy SQL rozdzielamy wszystkie kom
    endy
  14.  $sql_commands = [url="http://www.php.net/Split"]split[/url](';', $sql_commands);
  15.  $j = 1; // licznik zapytan
  16.  
  17.  for ($i=0; $i<count($sql_commands) -1; $i++)
  18.  {
  19. /* w tej petli nastepuje wysylanie zapytan do bazy danych, co ma na celu utworzen
    ie wszystkich potrzebnych tabel. jezeli zapytanie sie uda - wyswietlana jest informacja */
  20.  if (![url="http://www.php.net/Mysql_query"]mysql_query[/url]($sql_commands[$i]))
  21.  {
  22.  [url="http://www.php.net/Echo"]echo[/url] 'Zapytanie nr ' . $j . ': błąd ' . [url="http://www.php.net/Mysql_error"]mysql_error[/url]() . '...<br>';
  23.  }
  24.  
  25. ++$j;
  26.  }
  27. ?>


Ten skrypt właśnie służy do wgrywania na serwer, lecz on gubi się w połowie mojego pliku ;(...

Pomocy!
artega
@DarkItachiPL, określenie "gubi się" również nie jest zbyt pomocne - staraj się bardziej precyzować myśli a będzie łatwiej winksmiley.jpg można jedynie domyślać się co stanowi problem. Przypuszaczam, że skrypt wykonuje się zbyt długo (set_time_limit) albo format zawiera nieodpowiednią formę z założeniami tudzież MySQL nie odpowiada.
DarkItachiPL
Teraz odpowiem bardzo dokładnie co się dzieje ze skryptem umieszczonym w powyższym moim poście...
Otóż, on jakby to powiedzieć... dochodzi do zapytania znajdującego się po 1000 linijce, jest to zapytanie INSERT INTO, i on je wykonuje i nagle tak jakby plik się resetował i zapytania są wykonywane po kilka tysięcy razy i ten INSERT został wpisany kilka tysięcy razy, przez co zapycha się baza... Niestety wykonują się przed nim zapytania typu INSERT INTO, ale dalej już nie... Próbowałem wywalić to zapytanie, lecz następne robiły to samo... Nie jest to mój plik sql, jest to plik sql do phpbb modified by przemo.. Jeśli dalej nie wiesz o co mi chodzi podeślę ci mój sql(On jest złożony z tabelek i INSERTÓW(złożyłem go z 2 plików)) i sam przetestujesz o co mi chodzi... Pozdrawiam DarkItachiPL...

Próbowałem tak:
  1. <?php
  2. $file=file_get_contents('mysql_schema.sql');
  3. $result=mysql_db_query($db1,$file) or die(mysql_error());
  4. ?>


Ale jedyny rezultat jaki otrzymywałem to:
Something is wrong in your syntax obok '; CREATE TABLE phpbb_adv_person ( user_id mediumint(9) default '0' NOT NULL,' w linii 14
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.