Zaimportuj plik SQL do mysql


191

Mam bazę danych o nazwie nitm. Nie utworzyłem tam żadnych tabel. Ale mam plik SQL, który zawiera wszystkie niezbędne dane do bazy danych. Plik nitm.sqljest w C:\ drive. Ten plik ma rozmiar około 103 MB. Używam serwera Wamp.

Do zaimportowania pliku użyłem następującej składni w konsoli MySQL:

mysql>c:/nitm.sql;

Ale to nie zadziałało.



Odpowiedzi:


406

Z konsoli mysql:

mysql> use DATABASE_NAME;

mysql> source path/to/file.sql;


upewnij się, że nie ma ukośnika przed ścieżką, jeśli masz na myśli ścieżkę względną ... zajęło mi to trochę czasu, aby to zrozumieć! lol


36
Jeśli potrzebujesz względnego odniesienia, nie potrzebujesz ukośnika przed ścieżką. Jeśli wybierasz się z katalogu głównego, to będziesz/home/user/file.sql
Wes Johnson

5
Szkoda, że ​​nie ma sposobu, aby dodać odpowiedź do ulubionych :(
baldrs,

4
W Chrome nazywane są zakładkami i wystarczy kliknąć gwiazdkę w pasku adresu;)
Andrew

2
@ ArseniuszŁozicki dodaj pytanie, a będziesz w stanie dotrzeć do odpowiedzi :) to właśnie robię.
mandza

2
Wystarczy dodać do tej odpowiedzi, że path/to/file.sqljest to ścieżka lokalnego systemu plików, w której znajduje się klient mysql . Są chwile, kiedy serwer MySQL oczekuje ścieżki po stronie serwera, IE, SELECT ... INTO OUTFILEktóra upuszcza plik do ścieżki na serwerze MySQL!
Devy

90

Wreszcie rozwiązałem problem. Umieściłem plik `nitm.sql` w pliku` bin` folderu `mysql` i użyłem następującej składni.

C:\wamp\bin\mysql\mysql5.0.51b\bin>mysql -u root nitm < nitm.sql

I to zadziałało.


8
To nie pochodzi z konsoli mysql, jak poprosił OP, ale z konsoli do mysql. Odpowiedź Roberta Anthony'ego Tribiana opisuje, jak to zrobić z konsoli mysql.
halfpastfour.am

To nie jest dokładny sposób rozwiązania problemu, to nie jest rozwiązanie.
Ashish Ratan,

4
Wiecie, że to OP odpowiedział na to?
Wes

Jeśli twój mysql potrzebuje hasła, oznacza to, że metoda nie zadziała, potrzebujesz najwyższej odpowiedzi z @d -_- b
shellbye

52

Jeśli używasz wampa, możesz spróbować tego. Po prostu wpisz use your_Database_namepierwszy.

  1. Kliknij ikonę serwera Wamp, a następnie poszukaj, MYSQL > MSQL Consolea następnie uruchom go.

  2. Jeśli nie masz hasła, po prostu naciśnij enter i wpisz:

    mysql> use database_name;
    mysql> source location_of_your_file;

    Jeśli masz hasło, obiecujesz wprowadzić hasło. Najpierw wpisz hasło, a następnie wpisz:

    mysql> use database_name;
    mysql> source location_of_your_file;

location_of_your_file powinien wyglądać C:\mydb.sql

więc poleceniem jest mysql> source C: \ mydb.sql;

Ten rodzaj importu zrzutu SQL jest bardzo pomocny dla BIG SQL FILE.

Skopiowałem mój plik mydb.sqdo katalogu C:. Powinien to być wielka litera C: aby uruchomić

i to wszystko.


1
Ta odpowiedź wydaje się specyficzna dla WAMP, podczas gdy pokazany kod działa z dowolnego środowiska z MySQL, w którym można uzyskać dostęp do MySQL za pośrednictwem terminala lub konsoli.
halfpastfour.am

26

W systemie Windows, jeśli powyższa sugestia powoduje błąd (nie znaleziono pliku lub nieznana baza danych), możesz podwoić ukośniki:

W konsoli mysql:

mysql> use DATABASE_NAME;

mysql> source C://path//to//file.sql;

1
Pojedynczy ukośnik działał dla mnie na moim komputerze z systemem Windows.
Manoj Shrestha

17

Ok, więc używam Linuksa, ale myślę, że dotyczy to również Windows. Możesz to zrobić bezpośrednio z wiersza polecenia

> mysql -u <user name> -p<password> <database name> < sqlfilename.sql

Lub z poziomu wiersza polecenia mysql możesz użyć:

mysql>source sqlfilename.sql

Ale oba te podejścia mają swoje zalety w wyświetlanych wynikach. W pierwszym podejściu skrypt kończy się, gdy tylko napotka błąd. A najlepsze jest to, że podaje dokładny numer wiersza w pliku źródłowym, w którym wystąpił błąd. Jednak wyświetla TYLKO błędy. Jeśli nie napotkał żadnych błędów, skrypty wyświetlają NIC. Co może być trochę denerwujące. Ponieważ najczęściej uruchamiasz skrypt z całą stosem poleceń.

Teraz drugie podejście (z poziomu wiersza polecenia mysql) ma tę zaletę, że wyświetla komunikat dla każdej innej komendy MySQL w skrypcie. Jeśli napotka błędy, wyświetla komunikat o błędzie mysql, ale kontynuuje pracę przez skrypty. Może to być dobre, ponieważ możesz następnie wrócić i naprawić wszystkie błędy przed ponownym uruchomieniem skryptu. Minusem jest to, że NIE wyświetla numerów wierszy w skrypcie, w którym wystąpiły błędy. To może być trochę uciążliwe. Ale komunikaty o błędach są tak opisowe, że prawdopodobnie możesz dowiedzieć się, gdzie jest problem.

Ja, na przykład, wolę podejście z linii poleceń bezpośrednio z systemu operacyjnego.



7

Jesteś prawie na miejscu

mysql> \. c:/nitm.sql;

Możesz również uzyskać dostęp do pomocy przez

mysql> \?

1
To nie zadziałało. Kiedy użyłem mysql> \. c: /nitm.sql; , zwrócił błąd jak Nie udało się otworzyć pliku „c: \ nitm.sql;”, błąd: 2
kushalbhaktajoshi

Próbowałeś tego odmiany? Niektóre aplikacje przestrzegają C: \ nitm.sql
Lmwangi

Zauważ też, że średnik na końcu nie jest wymagany. Więc usuń to. Inną opcją jest „cd c:”, a następnie spróbuj „\. Nitm.sql”
Lmwangi

1
Zastanów się, zanim napiszesz. „cd c:” to polecenie wiersza polecenia systemu DOS, a nie konsoli mySql.
kushalbhaktajoshi

1
mysql> \. ~/Downloads/backups/file.sql działał idealnie w mysql> i od terminalu coosalodpowiedź działała również.
gmuhammad

6

Dla localhost na XAMPP. Otwórz okno cmd i wpisz

cd C:\xampp\mysql\bin
mysql.exe -u root -p

Uwaga! Brak średnika po -p Wprowadź hasło i wpisz

use database_name;

aby wybrać potrzebną bazę danych.

Sprawdź, czy jest tam twój stół

show tables;

Zaimportuj z pliku sql

source sqlfile.sql;

Umieściłem mój plik w lokalizacji C: \ xampp \ mysql \ bin, aby nie mieszać się z lokalizacjami pliku sql.


4

Próbować:

mysql -u username -p database_name < file.sql

Sprawdź opcje MySQL .

Uwaga: Lepiej jest użyć pełnej ścieżki do pliku SQL file.sql.


3

Nie zapomnij użyć

charset utf8

Jeśli twój plik sql jest w utf-8 :)

Więc musisz zrobić:

cmd.exe

root mysql -u

mysql> charset utf8

mysql> użyj mydbname

mysql> źródło C: \ mójfolder \ mój_plik.sql

Powodzenia ))


3

W systemie Linux przeszedłem do katalogu zawierającego plik .sql przed uruchomieniem mysql. Kursor systemowy znajduje się teraz w tym samym miejscu co plik i nie potrzebujesz ścieżki. Użyj źródła myData.sql, gdzie moja data jest zastąpiona nazwą twojego pliku.

cd whatever directory

mysql - p

podłącz targetDB

source myData.sql

Gotowe


2

z linii poleceń (cmd.exe, nie z powłoki mysql) spróbuj czegoś takiego:

type c:/nite.sql | mysql -uuser -ppassword dbname

Nie utworzyłem żadnego hasła do bazy danych, więc jest puste w polu hasła. Użyłem powyższej składni, takiej jak ta c: /nitm.sql | mysql -u root -p nitm, ale to również nie działało. Czy możesz mi jeszcze w tym pomóc?
kushalbhaktajoshi

Pominięcie -p również nie działało. Ten błąd wyrzucenia, taki jak „c:”, nie jest rozpoznawany jako polecenie wewnętrzne lub zewnętrzne, program operacyjny lub plik wsadowy.
kushalbhaktajoshi

2

Czy twój zrzut zawiera funkcje, które nie są obsługiwane w twojej wersji MySQL? Możesz także spróbować usunąć początkowe (i końcowe) MySQL komentowane instrukcje SET.

Nie wiem, czy twój zrzut pochodzi z Linuksowej wersji MySQL (zakończenia linii)?


Już usunąłem skomentowane przez mysql instrukcje SET. Ale nadal występuje błąd.
kushalbhaktajoshi

Możesz spróbować zalogować się do powłoki poleceń MySQL i instrukcji use then: „source c: \ nite.sql”. Nie zapomnij wybrać właściwej bazy danych.
Maickel

Naprawdę doceniam twój wysiłek. Dzięki.
kushalbhaktajoshi

2

Zainstalowałem mój serwer Wamp na dysku D: więc musisz przejść do następującej ścieżki z wiersza poleceń ur -> (a jeśli zainstalowałeś swój wamp na dysku c:, po prostu zastąp d: wtih c: tutaj)

D:\>cd wamp
D:\wamp>cd bin
D:\wamp\bin>cd mysql
D:\wamp\bin\mysql>cd mysql5.5.8 (whatever ur verserion will be displayed here use keyboard Tab button)
D:\wamp\bin\mysql\mysql5.5.8>cd bin
D:\wamp\bin\mysql\mysql5.5.8\bin>mysql -u root -p password db_name < "d:\backupfile.sql"

tutaj root jest użytkownikiem mojego phpmyadmin hasło jest hasłem dla phpmyadmin, więc jeśli nie ustawiłeś żadnego hasła dla roota, po prostu nic nie wpisuj w tym miejscu, db_name to baza danych (dla której bazy danych masz kopię zapasową), backupfile.sql jest plik, z którego chcesz utworzyć kopię zapasową swojej bazy danych, a także możesz zmienić lokalizację pliku kopii zapasowej (d: \ backupfile.sql) z dowolnego innego miejsca na komputerze


1
mysql>c:/nitm.sql;

Spowoduje to zapisanie wyniku polecenia mysql w pliku „nitm.sql;” (Co powinien zrobić „;”?) Zakładając, że masz kopię oryginalnego pliku (zanim go zastąpiłeś):

mysql < c:/nitm.sql

To też nie działało. Wystąpił błąd jak ERROR 1064 <42000>: Wystąpił błąd w składni SQL; sprawdź instrukcję, która odpowiada twojej wersji serwera MySql, aby użyć właściwej składni w pobliżu 'mysql <c: /nitm.sql' w linii 1
kushalbhaktajoshi

1

Eksportuj określone bazy danych

 djimi:> mysqldump --user=root --host=localhost --port=3306 --password=test -B CCR KIT >ccr_kit_local.sql

spowoduje to eksport baz danych CCR i KIT ...

Zaimportuj wszystkie wyeksportowane bazy danych do konkretnej instancji Mysql (musisz znajdować się tam, gdzie jest plik zrzutu)

djimi:> mysql --user=root --host=localhost --port=3306 --password=test < ccr_kit_local.sql

0

W systemie operacyjnym Windows dla mnie działają następujące polecenia.

mysql>Use <DatabaseName>
mysql>SOURCE C:/data/ScriptFile.sql;

Brak pojedynczych cudzysłowów lub podwójnych cudzysłowów wokół nazwy pliku. Ścieżka będzie zawierać „/” zamiast „\”.


0

Dla tych z was, którzy mają problem z wykonaniem tego, wypróbowując każdą możliwą odpowiedź, którą można znaleźć w SO. Oto, co działało dla mnie na VPS z systemem Windows 2012 R2:

  1. Umieść plik SQL w dowolnym miejscu, w którym znajduje się bin C:\Program Files\MySQL\MySQL Server 8.0\bin

  2. Otwórz wiersz polecenia systemu Windows (cmd)

  3. Biegać C:\Program Files\MySQL\MySQL Server 8.0\bin > mysql -u [username] -p
  4. Wprowadź hasło
  5. Uruchom polecenie use [database_name];
  6. Zaimportuj plik ze źródłem poleceń C://Program Files//MySQL//MySQL Server 8.0//bin//mydatabasename.sql

Zrobiło to dla mnie, ponieważ wszystko inne zawiodło. To też może ci pomóc.

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.