Comment exporter une base de données mysql à l'aide de l'invite de commandes?

342

J'ai une base de données qui est assez grande, donc je veux l'exporter à l'aide de l'invite de commandes, mais je ne sais pas comment.

J'utilise WAMP.

Starx
la source
6
DOS? utilisez-vous Windows 98? Ou voulez-vous dire l'invite de commande?
jle
Si vous utilisez wamp, vous devriez également avoir phpmyadmin, avec l'option d'exportation
Lars C. Magnusson

Réponses:

537

Vérifiez d'abord si votre ligne de commande reconnaît la commande mysql. Sinon, allez à la commande et tapez:

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

Utilisez ensuite cette commande pour exporter votre base de données:

mysqldump -u YourUser -p YourDatabaseName > wantedsqlfile.sql

Vous serez ensuite invité à entrer le mot de passe de la base de données .

Cela exporte la base de données vers le chemin dans lequel vous vous trouvez actuellement, lors de l'exécution de cette commande

Remarque: voici quelques instructions détaillées concernant l'importation et l'exportation

Starx
la source
7
il donne l'erreur "mysqldump: Erreur obtenue: 1049: Base de données inconnue 'thepassword' lors de la sélection de la base de données" mais a fonctionné lorsque je supprime "-p userpassword"
Ateş Danış
11
@ AteşDanış Il n'y a pas d'espace entre -pet thepassword.
Charles Wood
44
Vous devez simplement utiliser -pet vous serez ensuite invité à entrer le mot de passe. De cette façon, vous évitez d'enregistrer votre mot de passe, par exemple à.bash_history
nuala
7
Pour moi, cette commande fonctionne: mysqldump -u YourUser -p YourDatabaseName> wantedsqlfile.sql (Tapez la commande, appuyez sur Entrée, puis le mot de passe sera entré).
shasi kanth
3
La spécification d'un mot de passe sur la ligne de commande doit être considérée comme non sécurisée.
wappy
112

Utilisez simplement la commande suivante,

Pour l'export:

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

Pour l'importation:

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

Remarque: Il n'y a pas d'espace entre le mot-clé '-p' et votre mot de passe.

Srinivasan.S
la source
1
Je pense que vous avez manqué le fait qu'il utilise WAMP - Windows ... gunzip / gzip ne sont pas fournis avec Windows. Il pourrait être possible d'exécuter votre commande après avoir installé des éléments, mais je pense que vous avez manqué ce fait.
Rolf
2
La spécification gzip -9rend le fichier résultant un peu plus petit, car la compression maximale est utilisée.
AntonK
39

Tout d'abord, ouvrez l'invite de commande, puis ouvrez le répertoire bin dans cmd (j'espère que vous êtes au courant des commandes cmd ), accédez au répertoire bin de votre dossier MySql dans les fichiers du programme WAMP .

exécuter la commande

mysqldump -u db_username -p database_name > path_where_to_save_sql_file

appuyez sur enter le système exportera une base de données particulière et créera un fichier sql à l'emplacement donné.

j'espère que vous l'avez compris :) si vous avez des questions, faites-le moi savoir.

Mitesh vaghela
la source
Mon ami, j'ai essayé d'expliquer un peu le processus. plutôt que de donner un commandement direct
Mitesh vaghela
38

Eh bien, vous pouvez utiliser la commande ci-dessous,

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

et le fichier généré sera disponible dans le même répertoire que celui où vous avez exécuté cette commande.

Vous pouvez trouver plus sur la référence officielle pour mysqldump: Import Export MySQL DB

Remarque : utilisez --databasesau lieu de--database puisque le dernier n'est plus pris en charge.

Prendre plaisir :)

Umesh Patil
la source
4
Pour ceux qui obtiennent une erreur comme "Accès refusé lors de l'utilisation de LOCK TABLES", vous devez ajouter le paramètre "--single-transaction" à la commande.
Skyrpex
J'ai eu une erreur mysqldump: [ERROR] unknown option '--database'mais son exclusion --databasea fonctionné.
hejdav
@Skyrpex Merci, c'était la solution que je cherchais.
Martijn
22

Accédez à l'invite de commande sur ce chemin,

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

Donnez ensuite cette commande pour exporter votre base de données ( pas d'espace après -p )

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

user2484830
la source
21

Localisez votre instance mysql avec:

which mysql

Si cela est correct, exportez avec ce qui suit (sinon accédez à l'instance mysql dans votre dossier mamp dans bin):

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

Et si vous souhaitez le zipper en même temps:

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

Vous pouvez ensuite déplacer ce fichier entre les serveurs avec:

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

(où xxx.xxx.xxx.xxx est l'adresse IP du serveur)

Et puis importez-le avec:

gunzip filename.sql.gz | mysql -u [user] -p [password] [database]
Opentuned
la source
4
Encore une fois, W AMP => Windows. qui est une commande Linux. gunzip / gzip ne sont pas fournis avec Windows - et peuvent ne pas être disponibles. scp ... vous obtenez le point.
Rolf
La réponse d'Opentuned est excellente . Une petite chose supprime le réel passwordde la ligne de commande: mysqldump -u [username] -p [dbname]> filename.sql Cela empêche les gens de rechercher votre mot de passe dans votre historique.
Vincent
1
@Opentuned, c'est quoi le fétiche linux?
Pacerier
for -p [pasword] doit être proche, par exemple: mysqldump -u tutorials -p'mypassword' -h 127.0.0.1 database_name > file_backup_database_name_.sql Attention: L'utilisation d'un mot de passe sur l'interface de ligne de commande peut être peu sûre.
Marwan Salim
19

Pour exporter également des PROCEDURES, des FONCTIONS et des TRIGGER, ajoutez un --routinesparamètre:

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

arcadius
la source
Le commutateur --routinesfait la différence :) Des conseils sur la façon d'exporter uniquement les PROCÉDURES, FONCTIONS et DÉCLENCHEURS? Pour ceux qui ont oublié le switch et exporté une DB "pure" sans les "algorithmes" :)
AntonK
BTW, le commutateur --eventsest nécessaire pour vider les événements du planificateur d'événements et les déclencheurs sont toujours exportés, sauf indication --skip-triggerscontraire (selon 7.4.5.3 Dumping Stored Programs )
AntonK
10

Donnez cette commande pour exporter votre base de données, cela inclura également la date

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

(pas d'espace après -p)

Ossama
la source
Notez que la spécification --databasesinsérera des instructions comme CREATE DATABASE XYZ;et USE XYZ;, ce qui n'est pas pratique lors de l'importation du SQL dans une autre base de données avec un autre nom ...
AntonK
8

J'ai installé mon serveur wamp dans D: drive donc vous devez aller dans le chemin suivant depuis la ligne de commande ur -> (et si vous avez installé ur wamp dans c: drive, remplacez simplement le d: wtih c: ici)

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"

ici root est l'utilisateur de mon mot de passe phpmyadmin est le mot de passe de phpmyadmin donc si vous n'avez défini aucun mot de passe pour root rien de type à cet endroit, db_name est la base de données (pour laquelle la base de données prend la sauvegarde), backupfile.sql est le fichier dans lequel vous voulez une sauvegarde de votre base de données et vous pouvez également changer l'emplacement du fichier de sauvegarde (d: \ backupfile.sql) de n'importe quel autre endroit sur votre ordinateur

Sachin
la source
De toutes les façons dont j'ai trouvé cela, cette réponse est la seule qui a fonctionné pour moi. J'utilise MySQL version 5.6, donc le chemin était ... \ MySQL \ MySQL Server 5.6 \ bin pour l'invite de commande. Vous devrez utiliser votre nom d'utilisateur et votre mot de passe d'administrateur MySQL, ceux spécifiés pour une base de données particulière ne fonctionneront pas. Merci Sachin. Même les instructions du manuel MySQL pour la v.5.6 ne fonctionnent pas. La syntaxe y est incomplète.
Max West
Cela fonctionne-t-il vraiment avec l'espace entre -pet password?
Davis
7
mysqldump -h [host] -p -u [user] [database name] > filename.sql

Exemple dans localhost

mysqldump -h localhost -p -u root cookbook > cookbook.sql
Nanhe Kumar
la source
4

Le problème avec toutes ces solutions (en utilisant le >caractère redirecteur) est que vous écrivez votre vidage depuis stdout, ce qui peut casser le codage de certains caractères de votre base de données.

Si vous avez un problème d'encodage de caractères. Tel que :

ERREUR 1064 (42000): vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à la version de votre serveur MySQL pour la bonne syntaxe à utiliser près de ...

ensuite, vous DEVEZ utiliser l' -roption pour écrire le fichier.

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

Utilisation de Docker

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

Remarque: cela monte le chemin actuel en tant que vidage à l'intérieur de l'instance.

Nous avons trouvé la réponse ici

Inversement, n'utilisez pas <pour importer votre vidage dans votre base de données, encore une fois, vos caractères non utf8 peuvent ne pas être passés; mais préférez l'option source.

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

Syntaxe

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

Exemple

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

d: \ wamp \ bin \ mysql \ mysql5.6.12 \ bin \ mysqldump.exe sera votre chemin mysqldump.exe réel, mydbname est le nom de la base de données que vous souhaitez exporter et d: \ mydb.sql est le chemin où vous souhaitez stocker la base de données exportée.

Shailesh Prajapati
la source
0

J'ai utilisé un serveur Wamp. J'ai essayé

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

root est mon nom d'utilisateur pour mysql, et si vous avez un mot de passe, spécifiez-le avec:

-p[yourpassword]

Esperons que ça marche.

Aswin k
la source
--mot de passe doit être utilisé si vous essayez également de taper le mot de passe
Erce
0

Pour Windows OS :

Lorsque vous obtenez l'erreur 1064 mysql (42000) lors de la tentative d'exécution de la commande mysqldump , quittez le terminal actuel. Et exécutez la commande mysqldump.

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

J'essayais de prendre le vidage de la base de données qui s'exécutait sur le docker et est venu avec la commande ci-dessous pour obtenir la même chose:

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

J'espère que cela t'aides!

Vikash Kumar Choudhary
la source
-2

Vous pouvez utiliser ce script pour exporter ou importer n'importe quelle base de données à partir du terminal indiqué sur ce lien: 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
Ridhwan Luthra
la source