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?
30 réponses
, Essayez:
mysql -u username -p database_name < file.sql
Vérifier MySQL "Options De 151980920" .
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 originale. Ils ne sont pas copiés par défaut.
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;
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 ;
Parmi toutes les réponses, pour le problème ci-dessus, c'est le meilleur:
mysql> use db_name;
mysql> source file_name.sql;
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
- Ouvrir La Ligne de commande MySQL
- tapez le chemin de votre répertoire de bin mysql et appuyez sur entrez
- collez votre fichier SQL dans le dossier
bin
du serveur mysql. - créer une base de données en MySQL.
- utilisez cette base de données particulière où vous voulez importer le fichier SQL.
- Type
source databasefilename.sql
et entrer - votre fichier SQL télécharger avec succès.
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.
une solution qui a fonctionné pour moi est ci-dessous:
Use your_database_name;
SOURCE path_to_db_sql_file_on_your_local;
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
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
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
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
mysql --user=[user] --password=[password] [database] < news_ml_all.sql
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
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.
importer une base de données
-
Aller à la voiture:
command: d:
-
connexion à MySQL
command: c:\xampp\mysql\bin\mysql -u root -p
-
Il va demander pour les personnes handicapées. Inscrivez-le:
pwd
-
sélectionner la base de données
use DbName;
-
fournir le nom du fichier
\.DbName.sql
ajouter le --force
option :
mysql -u username -p database_name --force < file.sql
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.
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
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
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
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.
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.
comme https://stackoverflow.com/a/17666285/1888983
Principales différences pour moi:
- la base de données doit exister en premier
- 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.
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
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:
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.
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é.
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