Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak Wgrać Plik Sql Do Bazy
Forum PHP.pl > Forum > Bazy danych
maulus
mam plik sql, jak teraz go wgrać do bazy bez phpMyAdmina??



-- EDIT -- [Napoleon]


Przeniesione: php Poczatkujacy -> Bazy Danych
Indeo
Innym klientem. Problemem przy korzystaniu z phpmyadmina sa duże pliki sql gdzie czas operacji przesłania i wykonania zapytania jest zbyt długi i zostaje przerwany.
Możesz wykorzystać dowolnego klienta, jednak musisz mieć uprawnienia do zdalnego (jesli baza nie jest na twoim komputerze) połączenia z bazą i wykonania instrukcji sql.

Najszybszym sposobem jest uruchomienie klienta w wierszu poleceń (dosa, linuxa)
polecenie:
Kod
mysql -h hostname -u username -p


gdzie hostname- nazwa hosta bazy, username- nazwa uzytkownika, -p sygnalizuje żądanie hasła. Potem serwer zapyta nas o hasło.

Poleceniem
  1. USE nazwabazy;
wybieramy bazę.
Następnie odpalamy plik .sql poleceniem:

Kod
source sciezka_do_pliku.sql;


wszystkie polecenie kończą sie średnikiem ';' . Oczywiście musimy miec dostęp do shella systemu na którym uruchomiony jest serwer. Wbudowany klient mysql jest najszybszym klientem tych baz.
maulus
tak to by mogło być ale nie mam takich uprawnień na serwerze.
Skoro phpMyAdmin został napisany w php to jest jakiś skrypcik który może to wwalać, ale podkreśliłem że nie chodzi mi ani o phpMyADmin,a ni też raczej rzaden inny.
Indeo
W takim razie co za problem samemu takie coś napisać?

  1. <?php
  2.  
  3.  
  4. $db_server=&#092;"localhost\";
  5. $db_user=&#092;"user\";
  6. $db_pass=&#092;"hasło\";
  7. $db_name=&#092;"baza\";
  8. $nazwa_pliku='nazwa_pliku';
  9.  
  10. $link=mysql_connect(&#092;"$db_server\",\"$db_user\",\"$db_pass\");
  11. mysql_query(&#092;"use $db_name;\");
  12.  
  13. $plik=file(&#092;"$nazwa_pliku\");
  14. $plik=implode('',$plik);//złącz tablicę bo polecenia sql mogą zajmować kilka wierszy
  15. $plik=explode(';',$plik);//rozdziel poszczególne polecenia
  16.  
  17. foreach($plik as $i=>$polecenie){
  18. $wiersz++;//numeruj polecenia
  19. mysql_query($polecenie);
  20. $blad=mysql_error();//przechwyć ewentualne błędy
  21. if($blad) echo &#092;"<br>wiersz=$wiersz $blad\";//jeśli coś nie tak
  22. }
  23.  
  24. mysql_close($link);
  25.  
  26. ?>


Dobrze przedłużyć też limit czasu wykonywania skryptu (jak wyżej)
Pozdrawiam
maulus
Kod
Fatal error: Allowed memory size of 8388608 bytes exhausted at (null):0 (tried to allocate 35 bytes) in /murph/homepagev3/phpBB3/baza.php on line 14


wywala mi coś takiego - nie ma pamięci żeby załadować plik o wielkości 6 mb
Jojo
Najwyraźniej mu pamięci zabrakło. smile.gif Spróbuj pociąć ten plik na kilka mniejszych.
Sm0key
Witam

a jak by napisac skrypt który bedzie ladowal iles linii i jak skonczy laduje następne, coś jak ramki w sieci.
kicaj
Cytat(Sm0key @ 2004-06-22 14:39:15)
Witam

a jak by napisac skrypt który bedzie ladowal iles linii i jak skonczy laduje następne, coś jak ramki w sieci.

I to jest jedyne rozwiazanie na jakie wpadlem jakis czas temu, innego rozsadnego nie wiedze.
Bakus
  1. <?php
  2. $plik=file(&#092;"$nazwa_pliku\");
  3. ?>

To właśnie tu skrypt pada - wniosek? Odczytywać plik linijka, po liinijce. Jeżeli na końcu liniki znajduje się srednik, to wykonać całą linijkę, jeżeli nie, to dodać zawartość linijki do zmiennej i przejść do kolejnej i powtórzyć sprawdzenie warunku - jeżeli linijka kończy się średnikiem, to dodać ją do zmiennej i całość zmiennej wykonać...

Mam nadzieję, że zrozumieliście o co mi chodzi...
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.