Jak zaimportować duży plik sql w phpmyadmin

81

Chcę zaimportować plik sql o wielkości około 12 mb. Ale powoduje to problem podczas ładowania. Czy istnieje sposób na przesłanie go bez dzielenia pliku sql?

Jasmeet Kaur Chauhan
źródło
1
użyj niektórych narzędzi mysql, takich jak mysql workbenchlubmysql Yog
diEcho
możesz to również zobaczyć tutaj stackoverflow.com/questions/9593128/… Dunn.
Dung,
Jeśli nie możesz korzystać z konsoli mysql, istnieje ciekawe rozwiązanie, które pochodzi z dokumentacji phpmyadmin: ozerov.de/bigdump
Paolo Gibellini

Odpowiedzi:

97

Spróbuj zaimportować go z konsoli mysql zgodnie z gustem twojego systemu operacyjnego.

mysql -u {DB-USER-NAME} -p {DB-NAME} < {db.file.sql path}

lub jeśli znajduje się na serwerze zdalnym, użyj opcji -h, aby określić hosta.

mysql -u {DB-USER-NAME} -h {MySQL-SERVER-HOST-NAME} -p {DB-NAME} < {db.file.sql path}
manurajhada
źródło
1
Ok, dzięki za powrót. Dokonuję zmian w php.ini i spakuję plik. U mnie to działa :)
Jasmeet Kaur Chauhan
3
najszybszy sposób na zrobienie tego!
Aris
1
To świetna odpowiedź. Każdy, kto może nie być bardzo doświadczony, może po prostu przesłać plik DB do menedżera plików na hoście, a następnie użyć SSH na hoście, aby działać lokalnie. Jest to znacznie łatwiejsze niż instalacja mysqlna serwerze w przypadku jednej migracji. Dzięki za pomoc! (Nie potrzebowałem też nawiasów)
DomainsFeested
1
Ci, którzy się zastanawiają, muszą przejść do folderu MySQL / bin, aby uruchomić polecenie. Działało świetnie. Dzięki.
Etienne Dupuis
1
A co z tym, że nie mają hasła? używając bazy danych z domyślną nazwą użytkownika root? Używając tego polecenia, prosi o podanie hasła.
Hkachhia
68

3 rzeczy, które musisz zrobić:

w php.iniinstalacji php (uwaga: w zależności od tego, czy chcesz go używać dla CLI, apache lub nginx, znajdź odpowiedni plik php.ini do manipulowania)

post_max_size=500M

upload_max_filesize=500M

memory_limit=900M

lub ustaw inne wartości.

Zrestartuj / przeładuj apache, jeśli masz zainstalowany apache lub php-fpm dla nginx, jeśli używasz nginx.

Zdalny serwer?

zwiększać się max_execution_time, ponieważ przesłanie pliku zajmie trochę czasu.

Instalacja NGINX?

trzeba będzie dodać: client_max_body_size 912M;w /etc/nginx/nginx.confdo http{...}bloku

Toskan
źródło
3
Poprawna odpowiedź. Te 3 wiersze były obowiązkowe
To musi zostać dodane do twojego katalogu apache, a nie katalogu cli (przynajmniej tak, jak testowałem na moim Ubuntu box)
Bad_Neighbor
zmiana tego na /etc/php/7.1/apache2/php.ininie zadziałała
W. Doch
@RickSanchez na pewno uruchamiasz tę wersję php na apache? uruchom phpinfo()i sprawdź, czy wartości zostały ustawione poprawnie, a serwer został zrestartowany
Toskan
1
Nie zapomnij, aby podnieść wartość max_execution_time w php ini i restart apache
hamboy75
62

Edytuj plik config.inc.php znajdujący się w katalogu phpmyadmin. W moim przypadku znajduje się pod adresemC:\wamp\apps\phpmyadmin3.2.0.1\config.inc.php .

Znajdź linię oznaczoną $cfg['UploadDir']na niej i zaktualizuj ją do$cfg['UploadDir'] = 'upload';

Następnie utwórz katalog o nazwie `` upload '' w katalogu phpmyadmin (dla mnie pod adresem C:\wamp\apps\phpmyadmin3.2.0.1\upload\ ).

Następnie umieść duży plik SQL, który próbujesz zaimportować, do nowego uploadkatalogu. Teraz, kiedy przejdziesz do strony importu bazy danych w konsoli phpmyadmin, zauważysz rozwijaną listę, której wcześniej nie było - zawiera wszystkie pliki sql w katalogu upload, który właśnie utworzyłeś. Możesz teraz to zaznaczyć i rozpocząć import.

Jeśli nie używasz WAMP w systemie Windows, jestem pewien, że będziesz w stanie dostosować to do swojego środowiska bez większych problemów.

Źródła: http://daipratt.co.uk/importing-large-files-into-mysql-with-phpmyadmin/comment-page-4/

Siraj Khan
źródło
5
W nowszych wersjach phpMyAdmina nie ma zmiennej $ cfg ['UploadDir']; jednak to rozwiązanie nadal działa, po prostu dodając zmienną var w nowej linii w pliku.
dan
Zmienna znajduje się w config.default.phptym samym katalogu, używam phpmyadmin w wersji 4.6.4
KAD
1
Nie można już edytować poprzedniego komentarza, reż tolibraries/config.default.php
KAD
wspaniałe rozwiązanie po spędzeniu dwóch dni na wypróbowywaniu wiersza poleceń MySQL z wynikiem niepowodzenia.
youhana
22

Rozwiązanie dla użytkowników LINUX (uruchom z sudo)

Utwórz katalogi „upload” i „save”:

mkdir /etc/phpmyadmin/upload
mkdir /etc/phpmyadmin/save
chmod a+w /etc/phpmyadmin/upload
chmod a+w /etc/phpmyadmin/save

Następnie edytuj plik konfiguracyjny phpmyadmin:

gedit /etc/phpmyadmin/config.inc.php

Na koniec dodaj bezwzględną ścieżkę dla obu katalogów „upload” i „save”:

$cfg['UploadDir'] = '/etc/phpmyadmin/upload';
$cfg['SaveDir'] = '/etc/phpmyadmin/save';

Teraz po prostu upuść pliki w /etc/phpmyadmin/uploadfolderze, a będziesz mógł je wybrać z phpmyadmin.

wprowadź opis obrazu tutaj

Mam nadzieję, że to pomoże.

Guille Acosta
źródło
Dzięki tej metodzie phpmyadmin File could not be read!wysyła mi komunikat, gdy klikam przycisk przesyłania w formularzu przesyłania. W połowie rozwiązywania tego problemu.
@JoeRocc Czy znalazłeś rozwiązanie swojego problemu? Być może chodzi o pozwolenie lub problem z własnością. Spróbuj zsudo chmod 777 your-filename.sql
Guille Acosta,
2
775. Nie 777. NIE powinno się radzić ustawiania 777, aby wszystko działało na serwerze rzeczywistym. Ma problemy z bezpieczeństwem.
Koushik Das
15

Tylko jedna linia i gotowe (upewnij się, że polecenie mysql jest dostępne jako globalne lub po prostu przejdź do folderu instalacyjnego mysql i wejdź do folderu bin)

mysql -u database_user_name -p -D database_name < complete_file_path_with_file_name_and_extension 

Tutaj

  • u oznacza użytkownika
  • p oznacza hasło
  • D oznacza bazę danych

--- NIE ZAPOMNIJ DODAĆ < ZNAKU PO NAZWIE BAZY DANYCH ---

Pełna ścieżka do pliku z nazwą i rozszerzeniem może wyglądać jak

c:\folder_name\"folder name"\sql_file.sql

--- JEŚLI TWÓJ FOLDER I NAZWA PLIKU ZAWIERA MIEJSCE, NIŻ POWIĄZUJ ICH PODWÓJNYM CYTATEM ---

Wskazówka i uwaga: możesz wpisać swoje hasło później, -pale nie jest to zalecane, ponieważ będzie ono widoczne dla innych osób, które oglądają Twój ekran w tym czasie, jeśli nie napiszesz tam, zapyta Cię, kiedy wykonasz polecenie, naciskając klawisz Enter.

Vikas Khunteta
źródło
8

Utwórz plik zip lub tar i prześlij w phpmyadmin to wszystko ..!

Sachin z Pune
źródło
7

Udało mi się zaimportować duży .sqlplik, mając następującą konfigurację w httpd.confpliku:

Alias /phpmyadmin "C:/xampp/phpMyAdmin/"
<Directory "C:/xampp/phpMyAdmin">
    AllowOverride AuthConfig
    Require all granted

    php_admin_value upload_max_filesize 128M
    php_admin_value post_max_size 128M
    php_admin_value max_execution_time 360
    php_admin_value max_input_time 360
</Directory>
cosmintam
źródło
4

Będziesz musiał edytować plik php.ini. zmień następująceupload_max_filesize post_max_size aby dostosować się do rozmiaru pliku.

Próbuję biegać, phpinfo()aby zobaczyć ich aktualną wartość. Jeśli nie możesz zmienić pliku php.ini bezpośrednio, spróbuj ini_set ()

Jeśli to również nie jest możliwe, możesz spróbować bigdump .

shxfee
źródło
3

W tym celu będziesz musiał edytować php.iniplik, jeśli korzystasz z serwera ubuntu, to jest link Prześlij duży plik w phpMyAdmin może ci pomóc.

Nikunj K.
źródło
Dzięki, to było idealne.
Morteza Sepehri Niya
2

Natknąłem się na artykuł i to działało najlepiej dla mnie

  1. Otwórz plik config.inc.php w katalogu phpmyadmin za pomocą swojego ulubionego edytora kodu. W lokalnym środowisku MAMP powinien znajdować się tutaj:

Dysk twardy »Aplikacje» MAMP »bin» config.inc.php

  1. Wyszukaj frazę $cfg[‘UploadDir’]- będzie wyglądać tak:

$cfg['UploadDir'] = '';

  1. Zmień to tak, aby wyglądało tak:

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

  1. Następnie w katalogu phpmyadmin utwórz nowy folder i nadaj mu nazwę.

  2. Weź ten duży plik .sql, który próbujesz zaimportować, i umieść go w nowym folderze przesyłania.

  3. Teraz następnym razem, gdy będziesz importować bazę danych do phpMyAdmina, zobaczysz nowe pole rozwijane tuż pod standardowym obszarem przeglądania w sekcji „Plik do importu”.

Bobin Thomas
źródło
2

Ok, używasz PHPMyAdmin, ale czasami najlepszym sposobem jest przez terminal:

  • Połącz z bazą danych: mysql -h localhost -u root -p(przełącz root i localhost dla użytkownika i lokalizacji bazy danych)
  • Rozpocznij import ze zrzutu: \. /path/to/your/file.sql
  • Idź na kawę i chwal się sobą, bo używasz terminala.

I to wszystko. Pamiętaj tylko, że jeśli jesteś na serwerze zdalnym, musisz przesłać plik .sql do jakiegoś folderu.

Marcelo Agimóvel
źródło
2

odpowiedź dla osób ze współdzielonym hostingiem. Najlepiej użyć tego małego skryptu, którego właśnie użyłem do zaimportowania pliku DB o wielkości 300 MB na mój serwer. Skrypt nazywa się Big Dump.

udostępnia skrypt do importowania dużych baz danych na serwerach o ograniczonych zasobach

c0d3x1337
źródło
To właściwie dobre rozwiązanie, ale otrzymałeś głos negatywny z powodu adresu URL, który może być nieważny pewnego dnia. Prosimy o dodanie informacji na temat tego skryptu, w szczególności jego nazwę.
zamiast
nazywany dużym zrzutem zapobiega zatrzymywaniu się serwera SQL lub przerywaniu mu podczas importowania dużego pliku bazy danych na serwer. btw są inne odpowiedzi z adresami URL, które mogą zostać wyłączone w dowolnym momencie i żadna z nich nie została przegłosowana
c0d3x1337
2

W MAMP możesz ładować ogromne pliki przez:

  1. tworzenie nowego folderu w tym katalogu / MAMP / bin / phpMyAdmin / „nazwa_folderu”

  2. a następnie edytuj wiersz „/MAMP/bin/phpMyAdmin/config.inc.php” 531:

       $cfg['UploadDir']= 'folderName';   
    
  3. Skopiuj pliki .sql lub .csv do tego folderu.

  4. Teraz będziesz mieć inną opcję w "PhpMyAdmin": Wybierz z katalogu do załadowania serwera WWW newFolder /: Możesz wybrać swój plik i zaimportować go.

    Możesz teraz załadować dowolny plik !!

Saad Joudi
źródło
1

Najlepszym sposobem na przesłanie dużego pliku nie jest użycie phpmyadmin. powoduje, że phpmyadin najpierw przesyła plik przy użyciu klasy php upload, a następnie wykonuje sql, co powoduje, że przez większość czasu upływa jego czas.

najlepszym sposobem jest: wejdź do folderu wamp> bin> mysql> bin dirrectory, a następnie napisz tę linię

mysql -u root -p listnames <latestdb.sql tutaj nazwy_listy to nazwa bazy danych. Najpierw utwórz pustą bazę danych, a lastdb.sql to nazwa twojego pliku sql, w którym znajdują się twoje dane.

ale jedną ważną rzeczą jest to, czy plik bazy danych zawiera dane Unicode. musisz otworzyć swój plik latestdb.sql i jedną linię przed każdą linią. linia to:

NAZWY ZESTAWÓW utf8; następnie w trybie poleceń uruchom ten kod skryptu

tapos ghosh
źródło
1
  1. Otwórz swój plik sql w edytorze tekstów (takim jak Notatnik)
  2. Wybierz Wszystko -> Kopiuj
  3. Przejdź do phpMyAdmin, wybierz swoją bazę danych i przejdź do zakładki SQL
  4. Wklej skopiowaną zawartość do schowka
  5. Może wyskoczyć błąd javascript, zignoruj ​​go
  6. Wykonać
Teo Mihaila
źródło
Nie jest to dobra praktyka! Duże teksty będą powodować duże problemy, gdy to zrobisz. Najlepszym sposobem jest skonfigurowanie php.ini tak, aby umożliwić duży import lub import przez mysql.
Marcelo Agimóvel
0

Zmień ustawienia serwera, aby umożliwić przesyłanie plików większych niż 12 MB i wszystko powinno być w porządku. Zwykle ustawienia serwera są ustawione na 5 do 8 MB do przesyłania plików.

Tschallacka
źródło
1
To nie daje odpowiedzi na pytanie. Aby skrytykować lub poprosić autora o wyjaśnienie, zostaw komentarz pod jego postem. - Z recenzji
Sebastian Brosch
1
w rzeczywistości w momencie opublikowania tej odpowiedzi był to najczęstszy błąd (3 lata temu), że przesyłane pliki nie były wystarczająco duże. Używa phpmyadmin == webinterface. import == upload z dysku. upload == ustawienia serwera. ustawienia serwera == domyślne, czyli 5 lub 8 MB 3 lata temu. Więc nie widzę, jak to NIE daje odpowiedzi. Tak, nie prowadziłem go za rękę, jak dokładnie skonfigurować, ponieważ nie podał, którego serwera używa, apache, ngix, iis, inne.
Tschallacka
0

Jednym z rozwiązań jest użycie wiersza poleceń;

mysql -h yourhostname -u username -p databasename < yoursqlfile.sql

Po prostu upewnij się, że ścieżka do pliku SQL do zaimportowania jest wyraźnie określona.

W moim przypadku użyłem tego;

mysql -h localhost -u root -p databasename < /home/ejalee/dumps/mysqlfile.sql

Voila! Możesz ruszać.

Ejalee
źródło
0

Zrobiłem skrypt PHP, który jest przeznaczony do importowania dużych zrzutów bazy danych, które zostały wygenerowane przez phpmyadmin. Nazywa się PETMI i możesz go pobrać tutaj [strona projektu] [strona gitlab] . Został przetestowany z bazą danych 1 GB.

desbest
źródło
0

PHPmyadmin akceptuje również skompresowane pliki w formacie gzip, więc możesz spakować plik (użyj 7Zip, jeśli go nie masz) i przesłać spakowany plik. Ponieważ jest to plik tekstowy, będzie miał dobry współczynnik kompresji.

Marlon
źródło