Importieren Sie eine SQL-Datei in MySQL

190

Ich habe eine Datenbank namens nitm. Ich habe dort keine Tabellen erstellt. Aber ich habe eine SQL-Datei, die alle notwendigen Daten für die Datenbank enthält. Die Datei befindet nitm.sqlsich in C:\ drive. Diese Datei hat eine Größe von ca. 103 MB. Ich benutze Wamp Server.

Ich habe die folgende Syntax in der MySQL-Konsole verwendet, um die Datei zu importieren:

mysql>c:/nitm.sql;

Aber das hat nicht funktioniert.

kushalbhaktajoshi
quelle

Antworten:

406

Von der MySQL-Konsole:

mysql> use DATABASE_NAME;

mysql> source path/to/file.sql;


Stellen Sie sicher, dass vor dem Pfad kein Schrägstrich steht, wenn Sie sich auf einen relativen Pfad beziehen. Es hat eine Weile gedauert, bis mir das klar wurde! lol

d -_- b
quelle
36
Sie benötigen keinen Schrägstrich vor dem Pfad, wenn Sie eine relative Referenz erstellen. Wenn Sie von der Wurzel gehen, werden Sie, dh/home/user/file.sql
Wes Johnson
5
Wie schade, dass es keine Möglichkeit gibt, eine Antwort auf Favoriten hinzuzufügen :(
baldrs
4
In Chrome werden sie als Lesezeichen bezeichnet, und Sie können einfach auf den Stern in der Adressleiste klicken;)
Andrew
2
@ ArseniuszŁozicki füge die Frage hinzu und du wirst in der Lage sein zu antworten :) das ist was ich tue.
Mandza
2
Nur um dieser Antwort hinzuzufügen, dass dies path/to/file.sqlder lokale Dateisystempfad ist, in dem sich der MySQL- Client befindet. Es gibt Zeiten, in denen der MySQL-Server erwartet, dass sich der Pfad auf der Serverseite befindet, dh SELECT ... INTO OUTFILEder IE, der die Datei in den Pfad auf dem MySQL-Server legt!
Devy
90

Schließlich habe ich das Problem gelöst. Ich habe die Datei "nitm.sql" in die Datei "bin" des Ordners "mysql" gestellt und die folgende Syntax verwendet.

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

Und das hat funktioniert.

kushalbhaktajoshi
quelle
8
Dies ist nicht von der MySQL-Konsole, wie OP gefragt, sondern von einer Konsole in MySQL. Die Antwort von Robert Anthony Tribiana beschreibt, wie es über die MySQL-Konsole geht.
halfpastfour.am
Dies ist nicht der genaue Weg, um das Problem zu lösen, es ist keine Lösung.
Ashish Ratan
4
Ihr wisst, dass dies der OP war, der darauf geantwortet hat?
Wes
Wenn Ihre MySQL ein Passwort benötigt, dann funktioniert diese Methode nicht, Sie brauchen die Top-Antwort von @d -_- b
Shellbye
52

Wenn Sie Wamp verwenden, können Sie dies versuchen. Geben Sie einfach use your_Database_namezuerst ein.

  1. Klicken Sie auf das Symbol Ihres Wamp-Servers, suchen Sie es MYSQL > MSQL Consoleund führen Sie es aus.

  2. Wenn Sie kein Passwort haben, drücken Sie einfach die Eingabetaste und geben Sie Folgendes ein:

    mysql> use database_name;
    mysql> source location_of_your_file;

    Wenn Sie ein Passwort haben, werden Sie aufgefordert, ein Passwort einzugeben. Geben Sie zuerst Ihr Passwort ein und geben Sie Folgendes ein:

    mysql> use database_name;
    mysql> source location_of_your_file;

location_of_your_file Sollte aussehen, wie C:\mydb.sql

Das Lob lautet also mysql> source C: \ mydb.sql;

Diese Art des Importierens von SQL-Dumps ist für BIG SQL FILE sehr hilfreich.

Ich habe meine Datei mydb.sqin das Verzeichnis kopiert. C:Es sollte Großbuchstabe C: sein, um ausgeführt zu werden

und das ist es.

Robert Anthony Tribiana
quelle
1
Diese Antwort scheint WAMP-spezifisch zu sein, während der angezeigte Code in jeder Umgebung mit MySQL funktioniert, in der Sie über ein Terminal oder eine Konsole auf MySQL zugreifen können.
halfpastfour.am
26

Wenn der obige Vorschlag in Windows einen Fehler anzeigt (Datei nicht gefunden oder unbekannte Datenbank), möchten Sie möglicherweise die Schrägstriche verdoppeln:

In der MySQL-Konsole:

mysql> use DATABASE_NAME;

mysql> source C://path//to//file.sql;
user3219217
quelle
1
Ein einzelner Schrägstrich hat bei mir auf meinem Windows-Computer funktioniert.
Manoj Shrestha
17

Ok, ich benutze Linux, aber ich denke, das gilt auch für Windows. Sie können dies entweder direkt an der Eingabeaufforderung tun

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

Oder über die MySQL-Eingabeaufforderung können Sie Folgendes verwenden:

mysql>source sqlfilename.sql

Beide Ansätze haben jedoch ihre eigenen Vorteile in den angezeigten Ergebnissen. Beim ersten Ansatz wird das Skript beendet, sobald ein Fehler auftritt. Und das Beste daran ist, dass es Ihnen die genaue Zeilennummer in der Quelldatei angibt, in der der Fehler aufgetreten ist. Es werden jedoch NUR Fehler angezeigt. Wenn keine Fehler aufgetreten sind, wird in den Skripten NICHTS angezeigt. Was ein wenig nervig sein kann. Weil Sie am häufigsten ein Skript mit einem ganzen Stapel von Befehlen ausführen.

Jetzt hat der zweite Ansatz (innerhalb der MySQL-Eingabeaufforderung) den Vorteil, dass für jeden MySQL-Befehl im Skript eine Meldung angezeigt wird. Wenn Fehler auftreten, wird die MySQL-Fehlermeldung angezeigt, die Skripte werden jedoch fortgesetzt. Dies kann gut sein, da Sie dann zurückgehen und alle Fehler beheben können, bevor Sie das Skript erneut ausführen. Der Nachteil ist, dass die Zeilennummern im Skript, in dem die Fehler aufgetreten sind, NICHT angezeigt werden. Dies kann ein bisschen schmerzhaft sein. Die Fehlermeldungen sind jedoch genauso beschreibend, sodass Sie wahrscheinlich herausfinden können, wo das Problem liegt.

Zum einen bevorzuge ich den direkten Befehlszeilenansatz vom Betriebssystem aus.

Peterb
quelle
9

Wenn Sie xampp verwenden

C:\xampp\mysql\bin\mysql -uroot -p nitm < nitm.sql
Nanhe Kumar
quelle
7

Sie sind fast da

mysql> \. c:/nitm.sql;

Sie können auch auf Hilfe von zugreifen

mysql> \?
Lmwangi
quelle
1
Das hat nicht funktioniert. Als ich mysql> \ verwendet habe. c: /nitm.sql; , es warf Fehler wie Fehler beim Öffnen der Datei 'c: \ nitm.sql;', Fehler: 2
kushalbhaktajoshi
Haben Sie Variationen davon ausprobiert? Einige Anwendungen respektieren C: \ nitm.sql
Lmwangi
Beachten Sie auch, dass das Semikolon am Ende nicht erforderlich ist. Also entferne es. Eine andere Option ist 'cd c:', dann versuchen Sie "\. Nitm.sql"
Lmwangi
1
Bitte denken Sie nach, bevor Sie tippen. 'cd c:' ist der Befehl für die DOS-Eingabeaufforderung, nicht für die mySql-Konsole.
Kushalbhaktajoshi
1
mysql> \. ~/Downloads/backups/file.sql funktionierte perfekt innerhalb von mysql> und von terminal coosalantwort funktionierte auch.
Muhammad
6

Für localhost auf XAMPP. Öffnen Sie ein Cmd-Fenster und geben Sie ein

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

Beachtung! Kein Semikolon nach -p Geben Sie Ihr Passwort ein und geben Sie ein

use database_name;

um die gewünschte Datenbank auszuwählen.

Überprüfen Sie, ob Ihr Tisch da ist

show tables;

Importieren Sie aus Ihrer SQL-Datei

source sqlfile.sql;

Ich habe meine Datei unter dem Speicherort C: \ xampp \ mysql \ bin abgelegt, um sie nicht mit den Speicherorten der SQL-Datei zu verwechseln.

Adrian P.
quelle
4

Versuchen:

mysql -u username -p database_name < file.sql

Überprüfen Sie die MySQL-Optionen .

Hinweis: Es ist besser, den vollständigen Pfad der SQL-Datei zu verwenden file.sql.

Akshay Pethani
quelle
3

Vergiss nicht zu benutzen

charset utf8

Wenn Ihre SQL-Datei in utf-8 ist :)

Sie müssen also Folgendes tun:

cmd.exe

mysql -u root

mysql> charset utf8

mysql> benutze mydbname

mysql> source C: \ myfolder \ myfile.sql

Viel Glück ))

Олег Всильдеревьев
quelle
3

Unter Linux habe ich zu dem Verzeichnis navigiert, das die SQL-Datei enthält, bevor ich MySQL gestartet habe. Der Systemcursor befindet sich jetzt am selben Speicherort wie die Datei und Sie benötigen keinen Pfad. Verwenden Sie die Quelle myData.sql, in der mein Datum durch den Namen Ihrer Datei ersetzt wird.

cd whatever directory

mysql - p

verbinde targetDB

source myData.sql

Getan

Robert Quinn
quelle
2

Versuchen Sie über die Befehlszeile (cmd.exe, nicht aus der MySQL-Shell) Folgendes:

type c:/nite.sql | mysql -uuser -ppassword dbname
Omry Yadan
quelle
Ich habe kein Passwort für die Datenbank erstellt, daher ist es im Passwortfeld leer. Und ich habe die obige Syntax wie folgt verwendet: c: /nitm.sql | mysql -u root -p nitm aber das hat auch nicht funktioniert. Kannst du mir dabei noch weiter helfen?
Kushalbhaktajoshi
Das Weglassen von -p hat nicht so gut funktioniert. Dieser Fehler wie 'c:' wird nicht als interner oder externer Befehl, bedienbares Programm oder Batchdatei erkannt.
Kushalbhaktajoshi
2

Enthält Ihr Dump Funktionen, die in Ihrer MySQL-Version nicht unterstützt werden? Sie können auch versuchen, die startenden (und endenden) von MySQL kommentierten SET-Anweisungen zu entfernen.

Ich weiß nicht, ob Ihr Dump von einer Linux-Version von MySQL (Zeilenenden) stammt.

Maickel
quelle
Ich habe die von mysql kommentierten SET-Anweisungen bereits gelöscht. Trotzdem tritt der Fehler auf.
Kushalbhaktajoshi
Sie können versuchen, sich bei der MySQL-Befehlsshell anzumelden und die Anweisung then zu verwenden: "source c: \ nite.sql". Vergessen Sie nicht, die richtige Datenbank auszuwählen.
Maickel
Ich schätze Ihre Bemühungen sehr. Vielen Dank.
Kushalbhaktajoshi
2

Ich habe meinen Wamp-Server in Laufwerk D: installiert, sodass Sie von Ihrer Befehlszeile aus zum folgenden Pfad gehen müssen -> (und wenn Sie Ihren Wamp-Server in Laufwerk c: installiert haben, ersetzen Sie hier einfach d: wtih c:)

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"

hier ist root der Benutzer meines phpmyadmin- Passworts ist das Passwort für phpmyadmin. Wenn Sie also kein Passwort für root festgelegt haben, geben Sie an dieser Stelle nur nichts ein. Datenbankname ist die Datenbank (für die die Datenbank erstellt wird), backupfile.sql ist die Datei, von der Sie Ihre Datenbank sichern möchten, und Sie können auch den Speicherort der Sicherungsdatei (d: \ backupfile.sql) von einem anderen Ort auf Ihrem Computer ändern

Sachin
quelle
1
mysql>c:/nitm.sql;

Das würde die Ausgabe des Befehls mysql in 'nitm.sql' schreiben. (Was soll das ';' tun?) Angenommen, Sie haben eine Kopie der Originaldatei (bevor Sie sie überschrieben haben), dann:

mysql < c:/nitm.sql
Symcbean
quelle
Das hat auch nicht funktioniert. Es warf einen Fehler wie ERROR 1064 <42000> aus: Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySql-Serverversion entspricht, auf die richtige Syntax für 'mysql <c: /nitm.sql' in Zeile 1
kushalbhaktajoshi
1

Exportieren Sie bestimmte Datenbanken

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

Dadurch werden CCR- und KIT-Datenbanken exportiert ...

Alle exportierten DBs in eine bestimmte MySQL-Instanz importieren (Sie müssen sich dort befinden, wo sich Ihre Dump-Datei befindet)

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

Unter Windows funktionieren die folgenden Befehle für mich.

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

Keine einfachen oder doppelten Anführungszeichen um den Dateinamen. Der Pfad würde '/' anstelle von '\' enthalten.

Pabitra Dash
quelle
0

Für diejenigen unter Ihnen, die Schwierigkeiten haben, dies zu erreichen, versuchen Sie jede mögliche Antwort, die Sie auf SO finden können. Folgendes hat bei einem VPS unter Windows 2012 R2 funktioniert:

  1. Platzieren Sie Ihre SQL-Datei dort, wo sich der Papierkorb für mich befindet C:\Program Files\MySQL\MySQL Server 8.0\bin

  2. Windows-Eingabeaufforderung öffnen (cmd)

  3. Lauf C:\Program Files\MySQL\MySQL Server 8.0\bin > mysql -u [username] -p
  4. Geben Sie Ihr Passwort ein
  5. Befehl ausführen use [database_name];
  6. Importieren Sie Ihre Datei mit der Befehlsquelle C://Program Files//MySQL//MySQL Server 8.0//bin//mydatabasename.sql

Es tat es für mich, da alles andere fehlgeschlagen war. Es könnte dir auch helfen.

user45678
quelle