Ich habe mehrere sql
Dateien und möchte alle gleichzeitig in eine MySQL-Datenbank importieren .
Ich gehe zu PHPMyAdmin
, greife auf die Datenbank zu, klicke import
, wähle eine Datei aus und importiere sie. Wenn ich mehr als ein paar Dateien habe, dauert es lange.
Ich würde gerne wissen, ob es eine bessere Möglichkeit gibt, mehrere Dateien zu importieren, etwa eine Datei, die die anderen Dateien importiert, oder ähnliches.
Ich verwende WAMP
und möchte eine Lösung, bei der keine zusätzlichen Programme auf meinem Computer installiert werden müssen .
Antworten:
In Windows - , öffnen Sie ein Terminal, gehen Sie auf den Inhaltsordner und schreiben:
Dadurch werden alle Dateien in nur einer zusammengefasst, sodass der Import mit PhpMyAdmin sehr schnell erfolgt.
Unter Linux und MacOS reicht dies aus , wie @BlackCharly hervorhob:
Wichtiger Hinweis : Die direkte Ausführung sollte gut funktionieren, kann jedoch dazu führen, dass Sie in einer Schleife stecken bleiben und eine massive Ausgabedatei immer größer wird, da das System die Datei zu sich selbst hinzufügt. Um dies zu vermeiden, gibt es zwei mögliche Lösungen.
A) Legen Sie das Ergebnis sicherheitshalber in einem separaten Verzeichnis ab (Danke @mosh):
B) Konzentrieren Sie sie in eine Datei mit einer anderen Erweiterung und ändern Sie dann den Namen. (Danke @William Turrell)
quelle
Dies ist der einfachste Weg, den ich gefunden habe.
In Windows (Powershell):
cat *.sql | C:\wamp64\bin\mysql\mysql5.7.21\bin\mysql.exe -u user -p database
Sie müssen den Pfad zu Ihrem
WAMP - MySQL
obigen Pfad einfügen. Ich habe meinen Systempfad verwendet.Unter Linux (Bash):
cat *.sql | mysql -u user -p database
quelle
cat
Befehl fehlerhafte utf-8-Zeichen ausgibt, werden diese in Ihren mysql-Befehl geleitet, oder?!Gehe zu cmd
Geben Sie die Eingabeaufforderung C: \ Benutzer \ Benutzername> cd [Ordnerpfad für SQL-Tabellen] ein. Drücken Sie die
Eingabetaste. Beispiel
: C: \ Benutzer \ Benutzername> CD E: \ Projekt \ Datenbank
Geben Sie die Eingabeaufforderung C: \ Benutzer \ Benutzername> [Laufwerksname (Verzeichnisname) des SQL-Ordners] ein. Drücken Sie die
Eingabetaste. Beispiel
: C: \ Benutzer \ Benutzername> E:
Geben Sie die Eingabeaufforderung ein, um alle SQL-Dateien (Tabellen) in einer einzigen Datei zu
kopieren. Copy / b * .sql newdatabase.sql Drücken Sie die
Eingabetaste
EX: E: \ project \ database> copy / b * .sql newdatabase.sql
Sie können mehrere SQL-Tabellen (Datei-Tabellen) in einer einzigen Datei in Ihrem Verzeichnisordner zusammenführen. Beispiel
: E: \ project \ database
quelle
Ich weiß, dass es etwas mehr als zwei Jahre her ist ... aber ich suchte nach einer Möglichkeit, dies zu tun, und war mit der veröffentlichten Lösung nicht besonders zufrieden (es funktioniert einwandfrei, aber ich wollte ein wenig mehr Informationen, wenn der Import stattfindet). . Wenn Sie alle SQL-Dateien zu einer kombinieren, erhalten Sie keine Fortschrittsaktualisierungen.
Also suchte ich weiter nach einer Antwort und dachte, dies könnte ein guter Ort sein, um zu posten, was ich für zukünftige Leute gefunden habe, die nach der gleichen Antwort suchen. Hier ist eine Befehlszeile in Windows, die mehrere SQL-Dateien aus einem Ordner importiert. Sie führen dies über die Befehlszeile aus, während Sie sich in dem Verzeichnis befinden, in dem sich mysql.exe befindet.
for /f %f in ('dir /b <dir>\<mask>') do mysql --user=<user> --password=<password> <dbname> < <dir>\%f
Mit einigen angenommenen Werten (als Beispiel):
for /f %f in ('dir /b c:\sqlbackup\*.sql') do mysql --user=mylogin --password=mypass mydb < c:\sqlbackup\%f
Wenn Sie zwei Sätze von SQL-Sicherungen im Ordner hatten, können Sie die * .sql in eine spezifischere ändern (z. B. mydb _ *. Sql).
quelle
Geben Sie die MySQL-Shell wie folgt ein.
Verwenden Sie dann den Befehl source und ein Semikolon, um die Befehle zu trennen.
quelle
Schreib einfach:
und MySQL importiert die gesamte SQL-Datei nacheinander
quelle
Sie können auch eine for-Schleife verwenden, um dies zu tun:
#!/bin/bash for i in *.sql do echo "Importing: $i" mysql your_db_name < $i wait done
Quelle
quelle
Speichern Sie diese Datei als .bat und führen Sie sie aus. Ändern Sie die Variablen in Klammern ...
@echo off title Mysql Import Script cd (Folder Name) for %%a in (*) do ( echo Importing File : %%a mysql -u(username) -p(password) %%~na < %%a ) pause
Wenn es sich nur um eine Datenbank handelt, ändern Sie (%% ~ na) mit dem Datenbanknamen.
quelle
Die einfachste Lösung besteht darin, alle SQL-Dateien in eine zu kopieren / einzufügen.
Sie können kein SQL-Markup für den Dateiimport hinzufügen (die importierten Dateien befinden sich auf Ihrem Computer und nicht auf dem Server, und ich glaube nicht, dass MySQL ein Import-Markup für externe SQL-Dateien verwaltet).
quelle
cat
Linux oder Unix)Geben Sie einfach den folgenden Befehl in Ihre Eingabeaufforderung ein und es werden alle SQL-Dateien in eine einzige SQL-Datei gebunden.
quelle
Öffnen Sie in Windows Windows Powershell und wechseln Sie in den Ordner, in dem SQL-Dateien ausgeführt werden. Führen Sie dann diesen Befehl aus
quelle