Wie exportiere ich eine MySQL-Datenbank mit der Eingabeaufforderung?


342

Ich habe eine Datenbank, die ziemlich groß ist, daher möchte ich sie mithilfe der Eingabeaufforderung exportieren, weiß aber nicht, wie.

Ich benutze WAMP.


6
DOS? Verwenden Sie Windows 98? Oder meinst du die Eingabeaufforderung?
Jle

Wenn Sie Wamp verwenden, sollten Sie auch phpmyadmin mit der Exportoption haben
Lars C. Magnusson

Antworten:


536

Überprüfen Sie zunächst, ob Ihre Befehlszeile den Befehl mysql erkennt. Wenn nicht, gehen Sie zu Befehl und geben Sie Folgendes ein:

set path=c:\wamp\bin\mysql\mysql5.1.36\bin

Verwenden Sie dann diesen Befehl, um Ihre Datenbank zu exportieren:

mysqldump -u YourUser -p YourDatabaseName > wantedsqlfile.sql

Sie werden dann zur Eingabe des Datenbankkennworts aufgefordert .

Dadurch wird die Datenbank in den Pfad exportiert, in dem Sie sich gerade befinden, während Sie diesen Befehl ausführen

Hinweis: Hier finden Sie einige detaillierte Anweisungen zum Import und Export


7
es gibt Fehler "mysqldump: Got error: 1049: Unbekannte Datenbank 'thepassword' bei der Auswahl der Datenbank", aber funktioniert, wenn ich "-p userpassword" lösche
Ateş Danış

11
@ AteşDanış Es gibt kein Leerzeichen zwischen -pund thepassword.
Charles Wood

44
Sie sollten nur verwenden -pund werden dann zur Eingabe des Passworts aufgefordert. Auf diese Weise können Sie Ihr Passwort vermeiden, gespeichert zB in.bash_history
nuala

7
Für mich funktioniert dieser Befehl: mysqldump -u YourUser -p YourDatabaseName> wantsqlfile.sql ( Geben Sie den Befehl ein, drücken Sie die Eingabetaste, und dann wird das Kennwort eingegeben).
Shasi Kanth

3
Die Angabe eines Kennworts in der Befehlszeile sollte als unsicher angesehen werden.
wappy

112

Verwenden Sie einfach den folgenden Befehl:

Für den Export:

mysqldump -u [user] -p [db_name] | gzip > [filename_to_compress.sql.gz] 

Für den Import:

gunzip < [compressed_filename.sql.gz]  | mysql -u [user] -p[password] [databasename] 

Hinweis: Zwischen dem Schlüsselwort '-p' und Ihrem Passwort ist kein Leerzeichen.


1
Ich denke, Sie haben die Tatsache verpasst, dass er WAMP verwendet - Windows ... gunzip / gzip sind nicht mit Windows gebündelt. Es ist möglich, dass Sie Ihren Befehl ausführen, nachdem Sie einige Dinge installiert haben, aber ich denke, Sie haben diese Tatsache übersehen.
Rolf

2
Durch die Angabe gzip -9wird die resultierende Datei etwas kleiner, da die maximale Komprimierung verwendet wird.
AntonK

39

Zunächst einmal offen Eingabeaufforderung öffnen Sie dann bin Verzeichnis in cmd (ich hoffe , Sie sind uns bewusst mit cmd gehen Befehle) zu bin - Verzeichnis Ihrer MySql Ordner in WAMP Programmdateien.

Führen Sie den Befehl aus

mysqldump -u db_username -p database_name > path_where_to_save_sql_file

Drücken Sie die Eingabetaste. Das System exportiert eine bestimmte Datenbank und erstellt eine SQL-Datei an dem angegebenen Speicherort.

Ich hoffe du hast es :) Wenn du irgendwelche Fragen hast, lass es mich wissen.


Mein Freund, ich habe versucht, den Prozess ein wenig zu erklären. anstatt direktes Kommando zu geben
Mitesh vaghela

38

Nun, Sie können den folgenden Befehl verwenden:

mysqldump --databases --user=root --password your_db_name > export_into_db.sql

Die generierte Datei ist in demselben Verzeichnis verfügbar, in dem Sie diesen Befehl ausgeführt haben.

Weitere Informationen finden Sie in der offiziellen Referenz für mysqldump: Import Export MySQL DB

Hinweis : Verwenden Sie --databasesanstelle von, --databaseda der letzte nicht mehr unterstützt wird.

Genießen :)


4
Für diejenigen, die eine Fehlermeldung wie "Zugriff bei Verwendung von LOCK TABLES verweigert" erhalten, sollten Sie dem Befehl den Parameter "--single-transaction" hinzufügen.
Skyrpex

Ich habe einen Fehler bekommen, mysqldump: [ERROR] unknown option '--database'aber der Ausschluss --databasehat funktioniert.
Hejdav

@ Skyrpex Danke, das war die Lösung, nach der ich gesucht habe.
Martijn

22

Gehen Sie zur Eingabeaufforderung unter diesem Pfad.

C:\Program Files (x86)\MySQL\MySQL Server 5.0\bin>

Geben Sie dann diesen Befehl ein, um Ihre Datenbank zu exportieren ( kein Leerzeichen nach -p ).

mysqldump -u[username] -p[userpassword] yourdatabase > [filepath]wantedsqlfile.sql


21

Suchen Sie Ihre MySQL-Instanz mit:

which mysql

Wenn dies korrekt ist, exportieren Sie Folgendes: Andernfalls navigieren Sie zur MySQL-Instanz in Ihrem Mamp-Ordner in bin):

mysqldump -u [username] -p [password] [dbname] > filename.sql

Und wenn Sie es gleichzeitig komprimieren möchten:

mysqldump -u [username] -p [password] [db] | gzip > filename.sql.gz

Sie können diese Datei dann zwischen Servern verschieben mit:

scp user@xxx.xxx.xxx.xxx:/path_to_your_dump/filename.sql.gz your_detination_path/

(wobei xxx.xxx.xxx.xxx die Server-IP-Adresse ist)

Und dann importieren Sie mit:

gunzip filename.sql.gz | mysql -u [user] -p [password] [database]

4
Wieder W AMP => Windows. Das ist ein Linux-Befehl. gunzip / gzip werden nicht mit Windows gebündelt - und sind möglicherweise nicht verfügbar. scp ... du verstehst, worum es geht.
Rolf

Die Antwort von Opentuned ist großartig . Eine kleine Sache ist das Entfernen des tatsächlichen passwordvon der Befehlszeile: mysqldump -u [Benutzername] -p [Datenbankname]> Dateiname.sql Dies verhindert, dass Personen Ihren Verlauf nach dem Kennwort durchsuchen.
Vincent

1
@Opentuned, was ist mit dem Linux-Fetisch?
Pacerier

for -p [pasword] muss in der Nähe sein, z. B.: mysqldump -u tutorials -p'mypassword' -h 127.0.0.1 database_name > file_backup_database_name_.sql Warnung: Die Verwendung eines Kennworts auf der Befehlszeilenschnittstelle kann unsicher sein.
Marwan Salim

19

Fügen Sie zum Exportieren von PROCEDUREs, FUNCTIONs & TRIGGERs den folgenden --routinesParameter hinzu:

mysqldump -u YourUser -p YourDatabaseName --routines > wantedsqlfile.sql


Der Schalter --routinesmacht den Unterschied :) Gibt es Hinweise, wie nur VERFAHREN, FUNKTIONEN & TRIGGER exportiert werden können? Für diejenigen, die den Schalter vergessen und "reine" DB ohne die "Algorithmen" exportiert haben :)
AntonK

Übrigens wird der Schalter --eventsbenötigt, um Event Scheduler-Ereignisse zu sichern, und die TRIGGERs werden immer exportiert, sofern --skip-triggersnicht anders angegeben (gemäß 7.4.5.3 Speichern gespeicherter Programme )
AntonK

10

Geben Sie diesen Befehl ein, um Ihre Datenbank zu exportieren. Dies schließt auch das Datum ein

mysqldump -u[username] -p[userpassword] --databases yourdatabase | gzip > /home/pi/database_backup/database_`date '+%m-%d-%Y'`.sql.gz

(kein Leerzeichen nach -p)


Beachten Sie, dass durch die Angabe --databasesAnweisungen als CREATE DATABASE XYZ;und USE XYZ;
eingefügt werden

8

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

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 and select the currently working mysql version on your server if you have more than one mysql versions)
D:\wamp\bin\mysql\mysql5.5.8>cd bin
D:\wamp\bin\mysql\mysql5.5.8\bin>mysqldump -u root -p password db_name > "d:\backupfile.sql"

Hier ist root der Benutzer meines phpmyadmin- Passworts. Das Passwort 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, in 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


Von allen Möglichkeiten, die ich gefunden habe, ist diese Antwort die einzige, die für mich funktioniert hat. Ich verwende MySQL Version 5.6, daher war der Pfad ... \ MySQL \ MySQL Server 5.6 \ bin für die Eingabeaufforderung. Sie müssen Ihren MySQL-Administrator-Benutzernamen und Ihr Kennwort verwenden. Die für eine bestimmte Datenbank angegebenen funktionieren nicht. Danke Sachin. Selbst die Anweisungen im MySQL-Handbuch für Version 5.6 funktionieren nicht. Die Syntax ist dort unvollständig.
Max West

Funktioniert es wirklich mit dem Raum zwischen -pund password?
Davis

7
mysqldump -h [host] -p -u [user] [database name] > filename.sql

Beispiel in localhost

mysqldump -h localhost -p -u root cookbook > cookbook.sql

4

Das Problem mit all diesen Lösungen (mit dem > Redirector-Zeichens) besteht darin, dass Sie Ihren Speicherauszug aus stdout schreiben, wodurch die Codierung einiger Zeichen Ihrer Datenbank möglicherweise unterbrochen wird.

Wenn Sie ein Problem mit der Zeichenkodierung haben. Sowie :

FEHLER 1064 (42000): In Ihrer SQL-Syntax ist ein Fehler aufgetreten. Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, auf die richtige Syntax für ...

dann, Sie MÜSSEN verwenden-r Option verwenden, um die Datei zu schreiben.

MySQL

mysqldump -u user -pyour-password-without-space-between-letter-p-and-your-password --default-character-set=utf8 --host $HOST database-name -r dump.sql

Docker verwenden

docker exec --rm -v $pwd:dump -it mysql:5:7 mysqldump -u user -pyour-password-without-space-between-letter-p-and-your-password --default-character-set=utf8 --host $HOST database-name -r dump/dump.sql

Hinweis: Dadurch wird der aktuelle Pfad als Speicherauszug in der Instanz bereitgestellt.

Wir haben die Antwort gefunden hier gefunden

Umgekehrt verwenden Sie nicht <, um Ihren Speicherauszug in Ihre Datenbank zu importieren. Auch hier werden Ihre Nicht-utf8-Zeichen möglicherweise nicht übergeben. aber lieber Quelloption.

mysql -u user -pYourPasswordYouNowKnowHow --default-character-set=utf8 your-database
mysql> SET names 'utf8'
mysql> SOURCE dump.sql

1

Syntax

(mysqldump.exe full path) -u (user name) -p (password) (database name) > (export database file full path)

Beispiel

c:>d:\wamp\bin\mysql\mysql5.6.12\bin\mysqldump.exe -u root -p mydbname > d:\mydb.sql

Dabei ist d: \ wamp \ bin \ mysql \ mysql5.6.12 \ bin \ mysqldump.exe Ihr tatsächlicher Pfad für mysqldump.exe, mydbname der Name der Datenbank, die Sie exportieren möchten, und d: \ mydb.sql der Pfad, in den Sie möchten die exportierte Datenbank speichern.


0

Ich habe Wamp Server verwendet. ich probierte an

c:\wamp\bin\mysql\mysql5.5.8\bin\mysqldump -uroot -p db_name > c:\somefolder\filename.sql

root ist mein Benutzername für MySQL, und wenn Sie ein Passwort haben, geben Sie es an mit:

-p[yourpassword]

Hoffe, es funktioniert.


- Passwort muss verwendet werden, wenn Sie versuchen, das Passwort auch
einzugeben

0

Für Windows-Betriebssysteme :

Wenn beim Versuch, den Befehl mysqldump auszuführen , der Fehler 1064 mysql (42000) angezeigt wird , beenden Sie das aktuelle Terminal. Und führen Sie den Befehl mysqldump aus.

mysql>exit 
c:\xampp\mysql\bin>mysqldump -uroot -p --databases [database_name] > name_for_export_db.sql

0

Ich habe versucht, den Speicherauszug der Datenbank zu übernehmen, die auf dem Docker ausgeführt wurde, und habe den folgenden Befehl gefunden, um dasselbe zu erreichen:

Docker exec <container_id/name>/ usr / bin / mysqldump -u <db_username>--password = <db_password> db_name> .sql

Hoffe das hilft!


-2

Sie können dieses Skript verwenden, um eine Datenbank von einem Terminal zu exportieren oder zu importieren, das unter diesem Link angegeben wird: https://github.com/Ridhwanluthra/mysql_import_export_script/blob/master/mysql_import_export_script.sh

echo -e "Welcome to the import/export database utility\n"
echo -e "the default location of mysqldump file is: /opt/lampp/bin/mysqldump\n"
echo -e "the default location of mysql file is: /opt/lampp/bin/mysql\n"
read -p 'Would like you like to change the default location [y/n]: ' location_change
read -p "Please enter your username: " u_name
read -p 'Would you like to import or export a database: [import/export]: ' action
echo

mysqldump_location=/opt/lampp/bin/mysqldump
mysql_location=/opt/lampp/bin/mysql

if [ "$action" == "export" ]; then
    if [ "$location_change" == "y" ]; then
        read -p 'Give the location of mysqldump that you want to use: ' mysqldump_location
        echo
    else
        echo -e "Using default location of mysqldump\n"
    fi
    read -p 'Give the name of database in which you would like to export: ' db_name
    read -p 'Give the complete path of the .sql file in which you would like to export the database: ' sql_file
    $mysqldump_location -u $u_name -p $db_name > $sql_file
elif [ "$action" == "import" ]; then
    if [ "$location_change" == "y" ]; then
        read -p 'Give the location of mysql that you want to use: ' mysql_location
        echo
    else
        echo -e "Using default location of mysql\n"
    fi
    read -p 'Give the complete path of the .sql file you would like to import: ' sql_file
    read -p 'Give the name of database in which to import this file: ' db_name
    $mysql_location -u $u_name -p $db_name < $sql_file
else
    echo "please select a valid command"
fi
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.