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

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

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

database_name < file.sql

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

  • Comment puis-je importer ce fichier sans problème?
  • dois-je créer une base de données en premier?
1379
demandé sur DineshDB 2013-07-16 04:43:48

30 réponses

une utilisation courante de mysqldump est pour faire une sauvegarde d'une base de données entière:

shell> mysqldump db_name > backup-file.sql

vous pouvez charger le fichier dump de nouveau dans le serveur comme ceci:

UNIX

shell> mysql db_name < backup-file.sql

Le même Windows invite de commande:

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

PowerShell

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

ligne de commande MySQL

mysql> use db_name;
mysql> source backup-file.sql;
549
répondu vladkras 2018-05-27 17:54:04

concernant le temps pris pour importer des fichiers énormes: plus important encore, cela prend plus de temps parce que le paramètre par défaut de MySQL est autocommit = true . Vous devez le désactiver avant d'importer votre fichier et ensuite vérifier comment l'importation fonctionne comme une pierre précieuse.

Vous avez juste besoin de faire la chose suivante:

mysql> use db_name;

mysql> SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;
227
répondu Paresh Behede 2016-10-13 14:53:45

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

 mysql> use db_name;
 mysql> source file_name.sql;
80
répondu Manoj Kumar 2016-08-18 12:12:06

nous pouvons utiliser cette commande pour importer 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 est password . Et vous avez un nom de base de données comme bank et le fichier SQL est bank.sql . Alors, faites simplement comme ceci:

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

rappelez-vous où se trouve votre fichier SQL. Si votre fichier SQL est dans le dossier/répertoire Desktop , allez dans le répertoire de 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 depuis le répertoire Project , vous pouvez faire comme ceci:

~/Project ? mysql -u root -p password bank < ~/Desktop/bank.sql
53
répondu Amrit Dhungana 2015-03-19 17:51:30
  1. Ouvrir La Ligne de commande MySQL
  2. tapez le chemin de votre répertoire de bin mysql et appuyez sur entrez
  3. collez votre fichier SQL dans le dossier bin du serveur mysql.
  4. créer une base de données en MySQL.
  5. utilisez cette base de données particulière où vous voulez importer le fichier SQL.
  6. Type source databasefilename.sql et entrer
  7. votre fichier SQL télécharger avec succès.
48
répondu user4412947 2015-03-19 18:10:20

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

mysql -u username -p database_name < file.sql

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

mysql -u userName -p;

et fournir le mot de passe.

créer une base de données et l'utiliser

mysql>create database yourDatabaseName;
mysql>use yourDatabaseName;

puis importer le fichier sql ou le fichier dump dans la base de données à partir de

mysql> source pathToYourSQLFile;

Note: si votre terminal n'est pas dans l'endroit où le fichier dump ou sql existe, utilisez le chemin relatif ci-dessus.

38
répondu Kasun Siyambalapitiya 2017-10-12 07:01:56

une solution qui a fonctionné pour moi est ci-dessous:

Use your_database_name;
SOURCE path_to_db_sql_file_on_your_local;
37
répondu Shiks 2018-03-21 18:31:18

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

C:\xampp\mysql\bin>mysql -u username -ppassword databasename < C:\file.sql
29
répondu Tanmay Patel 2015-03-19 17:57:36

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

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

pour importer plusieurs dumps de base de données, utilisez la commande suivante.

mysql -u username -p password < dump.sql
22
répondu Leopathu 2018-02-08 17:50:53

pour Dumper 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 que vous êtes dans le même répertoire que le fichier SQL ou fournir le chemin complet du fichier)

mysql u -username -p database_name < database_name.sql
18
répondu Adeleke Akinade 2017-01-04 17:42:50

je pense qu'il est intéressant de mentionner que vous pouvez également charger un gzipped (compressé) fichier avec zcat comme montré ci-dessous:

zcat database_file.sql.gz | mysql -u username -p -h localhost database_name
18
répondu Francesco Casula 2017-03-01 10:55:38
mysql --user=[user] --password=[password] [database] < news_ml_all.sql
14
répondu user3546602 2015-01-08 14:09:16

pour importer plusieurs fichiers SQL en même temps, utilisez ceci:

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

pour l'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
12
répondu Abdul Rehman Janjua 2018-03-21 18:32:30

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

assurez-vous juste que vous êtes connecté avec un utilisateur qui a les permissions pour créer la base de données, si la base de données mentionnée dans le .sql fichier n'existe pas.

10
répondu Reuben 2016-07-02 09:37:39

importer une base de données

  1. Aller à la voiture:

    command: d:
    
  2. connexion à MySQL

    command: c:\xampp\mysql\bin\mysql -u root -p
    
  3. Il va demander pour les personnes handicapées. Inscrivez-le:

    pwd
    
  4. sélectionner la base de données

    use DbName;
    
  5. fournir le nom du fichier

    \.DbName.sql
    
10
répondu Pritam Chaudhari 2016-07-02 09:41:33

ajouter le --force option :

mysql -u username -p database_name --force < file.sql
8
répondu ktaria 2016-07-02 09:40:03

j'ai pensé qu'il pourrait être utile pour ceux qui utilisent Mac OS X :

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

remplacer xampp par mamp ou d'autres serveurs web.

7
répondu Giri 2015-03-19 17:58:53

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

d:/wamp/bin/mysql/mysql5.6.17/bin/mysql.exe -u root -p db_name < database.sql
7
répondu victor 2015-03-19 18:14:22

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

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

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

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

ou vous pouvez utiliser certains clients GUI comme SQLyog pour le faire.

6
répondu Sathish D 2015-03-19 17:49:09

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
répondu JohnSharath 2015-03-19 17:53:28

pour la sauvegarde, créer un fichier BAT et exécuter ce fichier BAT en utilisant " Task Scheduler . Il faudra une sauvegarde de la base de données; il suffit de copier la ligne suivante et coller dans Bloc-notes et ensuite enregistrer le .le fichier bat, et l'exécuter 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
répondu user3728517 2015-03-19 17:56:39

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

j'ai fixé comme ceci

mysql -u root -e "CREATE DATABASE db_name"
mysql db_name --force < import_script.sql
5
répondu David Silva Smith 2016-08-11 05:02:36

pour information je viens d'avoir par défaut root + withoutpassword, il 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. Elle fonctionne.

  • - ppassword WITHOUT SPACE.

4
répondu Paul Leclerc 2016-12-29 14:40:42

J'utilise Windows 10 avec Powershell 5 et j'ai trouvé presque toutes les solutions" unix-like " ne fonctionne 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 il fonctionne parfaitement, espérons qu'il aide.

merci à @ Francesco Casula 's réponse btw.

4
répondu Fery Wardiyanto 2017-05-23 10:31:37

comme https://stackoverflow.com/a/17666285/1888983

Principales différences 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

Running fedora 26 with MariaDB.

4
répondu jozxyqk 2017-08-08 19:30:03
mysql -u root -p password -D database_name << import.sql

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

je pense que ce sera utile 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 grande base de données et ne pas avoir une barre de progression. Utilisez Pipe Viewer et voir le transfert de données à travers la pipe

Pour Mac, brew install pv .Pour Debian / Ubuntu, apt-get install pv . Autres, se référer à 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
4
répondu Siva Praveen 2017-12-18 18:40:09

alors que la plupart des réponses ici ne mentionnent que la simple commande

mysql-u database_user-p [db_name] < database_file.sql

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

mysql-u database_user-p --default-character-set=utf8 [db_name] < database_file.sql

Surley cela fonctionne pour d'autres charsets aussi, comment montrer la bonne notation peut être vu ici:

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

un commentaire mentionne également que si une base de données n'existe jamais, une base de données vide doit être créée en premier. Ce peut-être raison dans certains cas, mais dépend du fichier d'exportation. Si le fichier exporté inclut déjà la commande pour créer la base de données alors la base de données ne doit jamais être créée dans une étape séparée, ce qui pourrait même causer une erreur lors de l'importation. Ainsi, à l'importation, il est conseillé de jeter un coup d'oeil d'abord dans le fichier pour savoir quelles commandes y sont incluses, à l'exportation, il est conseillé de noter les paramètres, surtout si le fichier est très grand et difficile à lire dans un éditeur.

il y a encore plus paramètres de 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 se réfèrent à la version 5.7 de MySQL.

4
répondu David 2018-08-07 18:11:40

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

Étape 1: Upload file.sql.zip dans n'importe quel répertoire et décompresse là

Note : 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

Step 3: mysql -u username -p database-name < file.sql

Entrez le mot de passe et attendre jusqu'le téléchargement est terminé.

3
répondu Ramesh Sinha 2015-03-19 18:12:24

fournir des justificatifs d'identité en ligne de commande n'est pas une bonne idée. Les réponses ci-dessus sont grandes, mais négligent de mentionner

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

Où etc/myhost.cnf est un fichier qui contient hôte, utilisateur, 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
répondu ChuckCottrill 2017-02-25 01:18:48