web-dev-qa-db-fra.com

Comment importer un fichier SQL en utilisant la ligne de commande de MySQL?

J'ai un fichier .sql avec une exportation de phpMyAdmin. Je veux l'importer sur un autre serveur en utilisant la ligne de commande.

J'ai un Windows Server 2008 R2 installation. J'ai placé le fichier .sql sur le lecteur C, et j'ai essayé cette commande

database_name < file.sql

Cela ne fonctionne pas, je reçois des erreurs de syntaxe.

  • Comment puis-je importer ce fichier sans problème?
  • Dois-je d'abord créer une base de données?
1511
Jaylen

Essayer:

mysql -u username -p database_name < file.sql

Vérifiez Options MySQL .

Note-1: Il est préférable d'utiliser le chemin complet du fichier SQL file.sql.

Note-2: Utilisez -R et --triggers pour conserver les routines et les déclencheurs de la base de données d'origine. Ils ne sont pas copiés par défaut.

Note-3 Vous devrez peut-être créer la base de données (vide) à partir de mysql si elle n'existe pas déjà et si le SQL exporté ne contient pas CREATE DATABASE (exporté avec l'option --no-create-db ou -n) avant de pouvoir l'importer.

2955
bansi

Une utilisation courante de mysqldump est destinée à la sauvegarde d'une base de données complète:

Shell> mysqldump db_name > backup-file.sql

Vous pouvez recharger le fichier de vidage sur le serveur comme suit:

UNIX

Shell> mysql db_name < backup-file.sql

Idem dans l'invite de commande Windows:

mysql -p -u [user] [database] < backup-file.sql

PowerShell

C:\> cmd.exe /c "mysql -u root -p db_name < backup-file.sql"

MySQL en ligne de commande

mysql> use db_name;
mysql> source backup-file.sql;
612
vladkras

En ce qui concerne le temps nécessaire pour importer des fichiers volumineux: plus important encore, cela prend plus de temps car MySQL est configuré par défaut sur autocommit = true Vous devez désactiver cette option avant d'importer votre fichier, puis vérifier comment l'importation fonctionne comme une gemme.

Vous devez juste faire ce qui suit:

mysql> use db_name;

mysql> SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;
252
Paresh Behede

Parmi toutes les réponses, pour le problème ci-dessus, c'est la meilleure:

 mysql> use db_name;
 mysql> source file_name.sql;
92
Manoj Kumar

Nous pouvons utiliser cette commande pour importer du code SQL à partir de la ligne de commande:

mysql -u username -p password db_name < file.sql

Par exemple, si le nom d'utilisateur est root et le mot de passe password. Et vous avez un nom de base de données comme bank et le fichier SQL est bank.sql. Ensuite, faites simplement comme ceci:

mysql -u root -p password bank < bank.sql

Rappelez-vous où se trouve votre fichier SQL. Si votre fichier SQL se trouve dans le répertoire/répertoire Desktop, accédez au répertoire du bureau et entrez la commande comme ceci:

~ ? cd Desktop
~/Desktop ? mysql -u root -p password bank < bank.sql

Et si vous êtes dans le répertoire Project et que votre fichier SQL est dans le répertoire Desktop. Si vous voulez y accéder à partir du répertoire Project, procédez comme suit:

~/Project ? mysql -u root -p password bank < ~/Desktop/bank.sql
60
Amrit Dhungana
  1. Ouvrez la ligne de commande MySQL
  2. Tapez le chemin de votre répertoire mysql bin et appuyez sur Enter
  3. Collez votre fichier SQL dans le dossier bin du serveur mysql.
  4. Créez une base de données dans MySQL.
  5. Utilisez la base de données particulière dans laquelle vous souhaitez importer le fichier SQL.
  6. Tapez source databasefilename.sql et Enter
  7. Votre fichier SQL a été téléchargé avec succès.
57
user4412947

Si vous avez déjà la base de données, utilisez ce qui suit pour importer le fichier dump ou sql

mysql -u username -p database_name < file.sql

si vous n'avez pas besoin de créer la base de données pertinente (vide) dans MySQL, pour cette première connexion, connectez-vous à la console MySQL en exécutant la commande suivante dans terminal ou dans cmd

mysql -u userName -p;

et lorsque vous y êtes invité, indiquez le mot de passe.

Ensuite, créez une base de données et utilisez-la

mysql>create database yourDatabaseName;
mysql>use yourDatabaseName;

Importez ensuite le fichier sql ou dump dans la base de données à partir de

mysql> source pathToYourSQLFile;

Remarque: si votre terminal n'est pas à l'emplacement où se trouve le fichier dump ou sql, utilisez le chemin relatif indiqué ci-dessus.

44

Une solution qui a fonctionné pour moi est la suivante:

Use your_database_name;
SOURCE path_to_db_sql_file_on_your_local;
40
Shiks

Allez dans le répertoire où vous avez l'exécutable MySQL. -u pour le nom d'utilisateur et -p pour demander le mot de passe:

C:\xampp\mysql\bin>mysql -u username -ppassword databasename < C:\file.sql
32
Tanmay Patel

Pour importer une base de données unique, utilisez la commande suivante.

mysql -u username -p password dbname < dump.sql

Pour importer plusieurs vidages de base de données, utilisez la commande suivante.

mysql -u username -p password < dump.sql
24
Leopathu

Je pense qu'il vaut la peine de mentionner que vous pouvez également charger un fichier gzipped (compressé) avec zcat comme ci-dessous:

zcat database_file.sql.gz | mysql -u username -p -h localhost database_name
23
Francesco Casula

Pour vider une base de données dans un fichier SQL, utilisez la commande suivante

mysqldump -u username -p database_name > database_name.sql

Pour importer un fichier SQL dans une base de données (assurez-vous de vous trouver dans le même répertoire que le fichier SQL ou indiquez le chemin complet du fichier)

mysql -u username -p database_name < database_name.sql
23
Adeleke Akinade
mysql --user=[user] --password=[password] [database] < news_ml_all.sql
15
user3546602

Le moyen le plus facile d'importer dans votre schéma:

Connectez-vous à mysql et émettez les commandes mentionnées ci-dessous 

mysql> use your_db_name;

mysql> source /opt/file.sql;
15
Ammad

Pour importer plusieurs fichiers SQL à la fois, utilisez ceci:

# Unix-based solution
for i in *.sql;do mysql -u root -pPassword DataBase < $i;done

Pour une importation simple:

# Unix-based solution
mysql -u root -pPassword DataBase < data.sql

Pour WAMP :

#mysqlVersion replace with your own version
C:\wamp\bin\mysql\mysqlVersion\bin\mysql.exe -u root -pPassword DataBase < data.sql

Pour XAMPP:

C:\xampp\mysql\bin\mysql -u root -pPassword DataBase < data.sql
13

Vous n'avez pas besoin de spécifier le nom de la base de données sur la ligne de commande si le fichier .sql contient les instructions CREATE DATABASE IF NOT EXISTS db_name et USE db_name.

Assurez-vous simplement que vous vous connectez avec un utilisateur disposant des autorisations pour créer la base de données, si la base de données mentionnée dans le fichier .sql n'existe pas.

12
Reuben

Importer une base de données

  1. Allez conduire:

    command: d:
    
  2. Connexion MySQL

    command: c:\xampp\mysql\bin\mysql -u root -p
    
  3. Il demandera pwd. Entrez le:

    pwd
    
  4. Sélectionnez la base de données

    use DbName;
    
  5. Fournir le nom du fichier

    \.DbName.sql
    
11
Pritam Chaudhari

Ajoutez l'option --force :

mysql -u username -p database_name --force < file.sql
9
ktaria

Allez dans le répertoire où vous avez MySQL.

 c:\mysql\bin\> mysql -u username -p password database_name <
 filename.sql

Également pour vider toutes les bases de données, utilisez l’option -all-databases et aucun nom de base de données n’a plus besoin d’être spécifié.

mysqldump -u username -ppassword –all-databases > dump.sql

Pour ce faire, vous pouvez également utiliser des clients à interface graphique tels que SQLyog.

8
Sathish D

La commande suivante fonctionne pour moi à partir de la ligne de commande (cmd) sous Windows 7 sous WAMP .

d:/wamp/bin/mysql/mysql5.6.17/bin/mysql.exe -u root -p db_name < database.sql
7
victor

Je pensais que cela pourrait être utile pour ceux qui utilisent Mac OS X :

/Applications/xampp/xamppfiles/bin/mysql -u root -p database < database.sql

Remplacez xampp par mamp ou d’autres serveurs Web.

7
Giri

Alors que la plupart des réponses ici ne font que mentionner la commande simple

mysql -u utilisateur_bdd -p [nom_bdd] <fichier_bdd.sql

aujourd'hui, il est assez courant que les bases de données et les tables utilisent utf8-collation lorsque cette commande n'est pas suffisante .Avec utf8-collation dans les tables exportées, il est nécessaire d'utiliser cette commande:

mysql -u utilisateur_base_de_donnees -p --default-character-set = utf8 [nom_bdd] <fichier_base.sql

Surley, cela fonctionne aussi pour d’autres jeux de caractères, voici comment afficher la bonne notation:

https://dev.mysql.com/doc/refman/5.7/en/show-collation.html

Un commentaire a également mentionné que si une base de données n'existe jamais, une base de données vide doit d'abord être créée. Cela peut être correct dans certains cas, mais dépend du fichier d'exportation. Si le fichier exporté inclut déjà la commande permettant de créer la base de données, celle-ci ne doit jamais être créée séparément, ce qui peut entraîner une erreur lors de l'importation. Donc, lors de l’importation, il est conseillé d’examiner d’abord dans le fichier pour savoir quelles commandes y sont incluses. Lors de l’exportation, notez les paramètres, en particulier si le fichier est très volumineux et difficile à lire dans un éditeur.

Il y a encore plus de paramètres pour la commande qui sont listés et expliqués ici:

https://dev.mysql.com/doc/refman/5.7/en/mysql-command-options.html

Si vous utilisez une autre version de la base de données, envisagez également de rechercher la version correspondante du manuel. Les liens mentionnés font référence à MySQL version 5.7.

6
David
mysql -u root -p password -D database_name << import.sql

Utilisez l'aide de mysql pour plus de détails mysql --help

Je pense que ce seront des options utiles dans notre contexte

[~]$ mysql --help
mysql  Ver 14.14 Distrib 5.7.20, for osx10.12 (x86_64) using  EditLine wrapper
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.                                                                                                                                         
Usage: mysql [OPTIONS] [database]
  -?, --help          Display this help and exit.
  -I, --help          Synonym for -?
  --bind-address=name IP address to bind to.
  -D, --database=name Database to use.
  --delimiter=name    Delimiter to be used.
  --default-character-set=name Set the default character set.
  -f, --force         Continue even if we get an SQL error.
  -p, --password[=name] Password to use when connecting to server.
  -h, --Host=name     Connect to Host.
  -P, --port=#        Port number to use for connection or 0 for default to, in order of preference, my.cnf, $MYSQL_TCP_PORT, /etc/services, built-in default (3306).
  --protocol=name     The protocol to use for connection (tcp, socket, pipe,
  -s, --silent        Be more silent. Print results with a tab as separator, each row on new line.
  -v, --verbose       Write more. (-v -v -v gives the table output format).
  -V, --version       Output version information and exit.
  -w, --wait          Wait and retry if connection is down.

ce qui est amusant, si nous importons une base de données volumineuse et n’avons pas de barre de progression. Utilisez Pipe Viewer et voyez le transfert de données à travers le tuyau

Pour Mac, brew install pv. Pour Debian/Ubuntu, apt-get install pv. Autres, voir http://www.ivarch.com/programs/pv.shtml

pv import.sql | mysql -u root -p password -D database_name

1.45GiB 1:50:07 [339.0KiB/s]   [=============>      ] 14% ETA 11:09:36
1.46GiB 1:50:14 [ 246KiB/s]     [=============>      ] 14% ETA 11:09:15
1.47GiB 1:53:00 [ 385KiB/s]     [=============>      ] 14% ETA 11:05:36
6
Siva Praveen

Parfois, le port défini ainsi que le serveur adresse IP de cette base de données comptent également ...

mysql -u user -p user -h <Server IP> -P<port> (DBNAME) < DB.sql 
5
JohnSharath

J'ai continué à courir dans le problème où la base de données n'a pas été créée.

Je l'ai réparé comme ça

mysql -u root -e "CREATE DATABASE db_name"
mysql db_name --force < import_script.sql
5
David Silva Smith

À des fins de sauvegarde, créez un fichier BAT et exécutez-le à l'aide de Task Scheduler . Il faudra une sauvegarde de la base de données; copiez simplement la ligne suivante et collez-le dans Notepad , puis enregistrez le fichier .bat et exécutez-le sur votre système.

@echo off
for /f "tokens=1" %%i in ('date /t') do set DATE_DOW=%%i
for /f "tokens=2" %%i in ('date /t') do set DATE_DAY=%%i
for /f %%i in ('echo %date_day:/=-%') do set DATE_DAY=%%i
for /f %%i in ('time /t') do set DATE_TIME=%%i
for /f %%i in ('echo %date_time::=-%') do set DATE_TIME=%%i

"C:\Program Files\MySQL\mysql server 5.5\bin\mysqldump" -u username -ppassword mysql>C:/%DATE_DAY%_%DATE_TIME%_database.sql
5
user3728517

De même pour https://stackoverflow.com/a/17666285/1888983
Différences clés pour moi:

  1. La base de données doit exister en premier
  2. Pas d'espace entre -p et le mot de passe

Shell> mysql -u root -ppassword #note: no space between -p and password
mysql> CREATE DATABASE databasename;
mysql> using databasename;
mysql> source /path/to/backup.sql

Lancer Fedora 26 avec MariaDB.

4
jozxyqk

Pour information, je viens d'avoir la racine par défaut + sans mot de passe, cela ne fonctionne pas avec toutes les réponses ci-dessus. 

  • J'ai créé un nouvel utilisateur avec tous les privilèges et un mot de passe. Ça marche. 

  • -password SANS ESPACE. 

4
Paul Leclerc

J'utilise Windows 10 avec Powershell 5 et j'ai trouvé la quasi-totalité des solutions de type "unix" qui ne fonctionnaient pas pour moi.

> mysql -u[username] [database-name] < my-database.sql
At line:1 char:31
+ mysql -u[username] [database-name] < my-database.sql
+                               ~
The '<' operator is reserved for future use.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : RedirectionNotSupported

Je finis par utiliser cette commande.

> type my-database.sql | mysql -u[username] -h[localhost] -p [database-name]

et cela fonctionne parfaitement, j'espère que cela aide.

Merci à @ Francesco Casula 's answer btw.

4
Fery Wardiyanto

Les étapes suivantes aident à télécharger file.sql dans la base de données MySQL.

Étape 1: Téléchargez file.sql.Zip dans un répertoire et décompressez-le 
Remarque : Sudo apt-get install unzip: Sudo apt-get unzip file.sql.Zip
Étape 2: Naviguez maintenant vers ce répertoire. Exemple: cd /var/www/html

Étape 3: mysql -u username -p database-name < file.sql
Entrez le mot de passe et attendez que le téléchargement soit terminé.

4
Ramesh Sinha

Fournir des informations d'identification sur la ligne de commande n'est pas une bonne idée. Les réponses ci-dessus sont excellentes, mais négligent de mentionner

mysql --defaults-extra-file=etc/myhost.cnf database_name < file.sql

Où etc/myhost.cnf est un fichier contenant l'hôte, l'utilisateur, le mot de passe et vous évitez d'exposer le mot de passe sur la ligne de commande Voici un échantillon,

[client]
Host=hostname.domainname
user=dbusername
password=dbpassword
3
ChuckCottrill

Importer dans la base de données: -

mysql -u nom d'utilisateur -p nom_base_données </ chemin_fichier/nom_fichier.sql

Exporter de la base de données: -

mysqldump -u nom d'utilisateur -p nom_base_données>/chemin du fichier/nom_fichier.sql

après ces commandes, Invite vous demandera votre mot de passe mysql

3
NeeruSingh

Si vous importez des données dans un conteneur de menu fixe, utilisez la commande suivante. Ajustez l'utilisateur (-u), la base de données (-D), le port (-P) et l'hôte (-h) en fonction de votre configuration.

mysql -u root -D database_name -P 4406 -h localhost --protocol=tcp -p < sample_dump.sql
2
Hamfri

Si vous utilisez MAMP sur Mac OS X, cela peut être utile:

/applications/MAMP/library/bin/mysql -u MYSQL_USER -p DATABASE_NAME < path/to/database_sql/FILE.sql

MYSQL_USER est root par défaut.

1
HowardDuck

Exporter des bases de données particulières:

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

Cela exportera les bases de données CCR et KIT ...

Importez toutes les bases de données exportées vers une instance MySQL particulière (vous devez être à l'emplacement de votre fichier de vidage):

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

sous Ubunt

 mysql -u root -p
 CREATE database dbname;
 use dbname;
 source /home/computername/Downloads/merchantapp.sql
 exit;

Sous Windows

Téléchargez le fichier SQL et enregistrez-le dans C:\xampp\mysql\bin.

Après cela, ouvrez la commande Invite avec C:\xampp\mysql\bin:

 C:\xampp\mysql\bin> mysql -u username -p database_name < file.sql
1
Shabeer Sha

Pour importer une base de données via un terminal

Naviguez jusqu'au dossier contenant le fichier SQL

la course en dessous de la commande

mysql -u database_user_name -p database_name < sql_file_name.sql

Il vous demandera un mot de passe. entrez le mot de passe de la base de données. Il faudra quelques secondes pour importer des données dans la base de données.

1
Dev Semicolon

Par exemple

J'ai installé le logiciel sur C:\xampp\mysql\bin .__ et mon fichier est à l'adresse C:\Users\file.sql

Il suffit de définir username et database_name

Remarque: Vous devez d’abord créer la base de données (database_name) manuellement.

Exécutez cette commande:

cd C:\xampp\mysql\bin && mysql -u username -p database_name < C:\Users\file.sql

Et puis entrez le mot de passe ???? 

1
Mahdi Bashirpour

Si votre dossier contient plusieurs fichiers SQL et que vous avez installé Git Bash vous pouvez utiliser cette commande pour importer plusieurs fichiers:

cd /my-project/data

cat *.sql | /c/xampp/mysql/bin/mysql -u root -p 1234 myProjectDbName
1
o0omycomputero0o

À partir de Windows, vous pouvez utiliser la commande ci-dessous pour importer des données à partir de SQL dump.

C:\Program Files\MySQL\Serveur MySQL 5.7\bin> mysql -u <> -p <> DBName <filelocation\query.sql

où -u suivi de nom d'utilisateur et -p suivi de mot de passe Mysql. Le mot de passe peut être ignoré dans la commande car il peut être saisi dans l'invite.

1
Ripudaman Singh

Vous pouvez essayer cette requête.

Exporter: Mysqldump -u nom_utilisateur –-password = votre_password nom_base_données> fichier.sql

Import: Mysql -u nom_utilisateur –-password = votre_password nom_base_données <fichier.sql

et détail suivant ce lien:

https://chartio.com/resources/tutorials/importing-from-and-exporting-to-files-using-the-mysql-command-line/

1

1) Allez dans votre répertoire wamp ou xampp Exemple

cd d: /wamp/bin/mysql/mysql5.7.24/bin

2) mysql -u racine -p DATABASENAME <PATHYOUDATABASE_FILE

0
Naveen dev

Si vous importez sur votre serveur de base de données local, vous pouvez effectuer les opérations suivantes:

mysql -u database_user -p < database_file.sql

Pour le serveur de base de données distant, procédez comme suit:

mysql -u database_user -p -h remote_server_url < database_file.sql
0
Edgencio Da Calista

Essaye ça:-

C:\xampp\mysql\bin>mysql -u root -p database_name --force < C:\file.sql
0
Amarat

Vous pouvez utiliser:

mysql -u<user> -p<pass> <db> < db.sql

exemple:

mysql -uroot -proot db < db.sql

au revoir!