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?


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}

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


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/


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.


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.



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>

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 .




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”.


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.


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


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 !!


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


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ć

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.


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ć.


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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.