Comment importer une base de données avec MySQL depuis un terminal?

373

Comment puis-je importer une base de données avec mysql depuis le terminal?

Je ne trouve pas la syntaxe exacte.

anévrisme
la source

Réponses:

761

En supposant que vous êtes sur une console Linux ou Windows:

Demander un mot de passe:

mysql -u <username> -p <databasename> < <filename.sql>

Entrez le mot de passe directement (non sécurisé):

mysql -u <username> -p<PlainPassword> <databasename> < <filename.sql>

Exemple:

mysql -u root -p wp_users < wp_users.sql

mysql -u root -pPassword123 wp_users < wp_users.sql

Voir également:

4.5.1.5. Exécution d'instructions SQL à partir d'un fichier texte


Remarque : Si vous êtes sous Windows, vous devrez cd(changer de répertoire) dans votre répertoire MySQL / bin à l'intérieur du CMD avant d'exécuter la commande.

Noir
la source
139
+1 sauf que vous ne devez pas transmettre votre mot de passe comme paramètre CLI. Indiquez plutôt l'option -p et entrez-la manuellement après l'invite.
St.Woland
13
Il n'y a pas d'espace entre -p et le mot de passe si vous voulez le saisir par shell.
Kethryweryn du
8
mysql -u username -h hostname -ppassword databasename <filename.sql pour l'hôte distant du terminal
Shaik Rilwan
8
si vous êtes déjà dans l'invite de commande mysql (mysql>), tapez simplement source full_path_of_file (note: sélectionnez la base de données par la commande USE DATABASE_NAME avant l'importation).
Ankit Sharma
3
@Pekka 웃, Si nous utilisons source, nous pouvons voir les messages d'information ( "lignes affectées" ) et les messages d'erreur. Mais en utilisant votre solution, comment voyons-nous les messages en utilisant< filename.sql ?
Pacerier
141

Manière préférable pour Windows:

  1. Ouvrez la console et démarrez le mode interactif MySQL

  2. use <name_of_your_database>;

  3. source <path_of_your_.sql>

Sri Harsha Kappala
la source
2
pourquoi n'avons-nous pas besoin d'un; après le nom du fichier?
Nabeel Khan
6
@NabeelKhan La plupart des instructions SQL nécessitent un ;à la fin de l'instruction, mais il existe quelques exceptions, notamment USEet SOURCE.
Simon East
1
Je me demande si cela fonctionne plus rapidement que de canaliser le fichier (comme dans la réponse acceptée). Ma suspicion est oui .
Simon East
C'est tellement plus rapide que d'importer via HeidiSQL ... 3 Go en 20 minutes!
kmdsax
Curieuse. Lorsque j'ai supprimé ;la sourcecommande a été exécutée avec succès. Avant cela ne le serait pas.
Nikos
33

mysql -u <USERNAME> -p <DB NAME> < <dump file path>

-u - pour le nom d'utilisateur

-p - pour demander le mot de passe

Par exemple. mysql -u root -p mydb < /home/db_backup.sql

Vous pouvez également fournir un mot de passe précédé de -p mais pour des raisons de sécurité, il n'est pas suggérable. Le mot de passe apparaîtra sur la commande elle-même plutôt masqué.

Mukesh Singh Rathaur
la source
2
C'est la réponse que je cherche. "<" c'est le signe que j'ai laissé.
Pravinraj Venkatachalam
Si mydb n'existe pas alors comment le créer dynamiquement quand on lance la commande mysqldump?
अक्षय परूळेकर
12

Directement depuis var / www / html

mysql -u username -p database_name < /path/to/file.sql

Depuis mysql:

mysql> use db_name;
mysql> source backup-file.sql
Lokesh Das
la source
7

Depuis le terminal:

mysql -uroot -p --default-character-set=utf8 database_name </database_path/database.sql
Mohammad Anini
la source
7

dans le type de terminal

mysql -uroot -p1234; use databasename; source /path/filename.sql
Patrick Mutwiri
la source
Cela a permis de voir le journal d'importation
Thiago Macedo
6

J'utilise généralement cette commande pour charger mes données SQL lorsqu'elles sont divisées en fichiers avec des noms: 000-tableA.sql, 001-tableB.sql, 002-tableC.sql.

for anyvar in *.sql; do <path to your bin>/mysql -u<username> -p<password>  <database name> < $anyvar; done

Fonctionne bien sur le shell OSX.

Lano
la source
5

Comment charger à partir de la ligne de commande

Explication:

  1. Créez d'abord une base de données ou utilisez une base de données existante. Dans mon cas, j'utilise une base de données existante

  2. Chargez la base de données en donnant <name of database> = ClassicModelsdans mon cas et en utilisant l'opérateur <donnez le chemin vers ledatabase = sakila-data.sql

  3. En exécutant des tables d'exposition, j'obtiens la liste des tables comme vous pouvez le voir.

Remarque: dans mon cas, j'ai eu une erreur 1062 , car j'essaie de charger à nouveau la même chose.

user42826
la source
5
mysql -u username -ppassword dbname < /path/file-name.sql

exemple

mysql -u root -proot product < /home/myPC/Downloads/tbl_product.sql

Utilisez-le depuis le terminal

vaibhav kulkarni
la source
5

La commande ci-dessous fonctionne sur Ubuntu 16.04, je ne suis pas sûr que cela fonctionne ou pas sur d'autres plates-formes Linux.

Exporter le fichier SQL:

$ mysqldump -u [user_name] -p [database_name] < [database_name.sql]  

Exemple: mysqldump -u root -p max_development> max_development.sql

Importer un fichier SQL:

$ mysqldump -u [user_name] -p [database_name] > [file_name.sql]

Example: mysqldump -u root -p max_production < max_development.sql

Remarque: le fichier SQL doit exister dans le même répertoire

Deepak Chaube
la source
5

Ouvrir ensuite le terminal

 mysql -u root -p

 eg:- mysql -u shabeer -p

Après cela, créez une base de données

 mysql> create database "Name";

 eg:- create database INVESTOR;

Sélectionnez ensuite cette nouvelle base de données "INVESTISSEUR"

 mysql> USE INVESTOR;

Sélectionnez le chemin du fichier sql de la machine

 mysql> source /home/shabeer/Desktop/new_file.sql;

Appuyez ensuite sur Entrée et attendez quelques fois si tout est exécuté, puis

 mysql> exit

entrez la description de l'image ici

Shabeer Sha
la source
4
  1. Ouvrez le client de ligne de commande MySQL et saisissez votre mot de passe

  2. Accédez à la base de données que vous souhaitez utiliser pour importer les données du fichier .sql dans. Pour ce faire, saisissez:

    USE your_database_name
  3. Recherchez maintenant le fichier .sql que vous souhaitez exécuter.
    Si le fichier se trouve dans le répertoire principal du lecteur C: local et que le nom du fichier de script .sql est currentSqlTable.sql, vous devez taper ce qui suit:

    \. C:\currentSqlTable.sql

    et appuyez sur Enterpour exécuter le fichier de script SQL.

student001
la source
7
Qu'est-ce que la figure 1/2/3?
glglgl
4

Après avoir lutté pendant un certain temps, j'ai trouvé les informations dans https://tommcfarlin.com/importing-a-large-database/

  1. Connectez-vous à Mysql (utilisons root pour le nom d'utilisateur et le mot de passe):

    mysql -uroot -proot
  2. Connectez-vous à la base de données (disons qu'elle s'appelle emptyDatabase (vous devriez recevoir un message de confirmation):

    connect emptyDatabase

3 Importez le code source, disons que le fichier s'appelle mySource.sql et qu'il se trouve dans un dossier appelé mySoureDb sous le profil d'un utilisateur appelé myUser:

source /Users/myUser/mySourceDB/mySource.sql
LumasDesign
la source
3

Si vous utilisez sakila-db à partir du site Web mysql, c'est très simple sur la plate-forme Linux, suivez simplement les étapes ci-dessous, après avoir téléchargé le fichier zip de sakila-db , extrayez-le. Vous allez maintenant avoir deux fichiers, l'un est sakila-schema.sql et l'autre est sakila-data.sql .


  1. Terminal ouvert
  2. Entrez la commande mysql -u root -p <sakila-schema.sql
  3. Entrez la commande mysql -u root -p <sakila-data.sql
  4. Entrez maintenant la commande mysql -u root -p et entrez votre mot de passe, maintenant vous êtes entré dans le système mysql avec la base de données par défaut .
  5. Pour utiliser la base de données sakila, utilisez cette commande use sakila;
  6. Pour voir les tables dans sakila-db, utilisez la commande show tables

Veuillez vous assurer que les fichiers extraits sont présents dans le répertoire personnel .

alpha9eek
la source
2

Dans Ubuntu, depuis le moniteur MySQL , vous avez déjà utilisé cette syntaxe:

mysql> use <dbname> -> L'instruction USE indique à MySQL de l'utiliser dbnamecomme base de données par défaut pour les instructions suivantes

mysql> source <file-path>

par exemple :

mysql> use phonebook;

mysql> source /tmp/phonebook.sql;

Important : assurez-vous que le fichier sql se trouve dans un répertoire auquel mysql peut accéder comme / tmp

Viet Hoang
la source
1

Avant d'exécuter les commandes sur le terminal, vous devez vous assurer que MySQL est installé sur votre terminal.

Vous pouvez utiliser la commande suivante pour l'installer:

sudo apt-get update
sudo apt-get install mysql-server

Réfrence ici .

Après cela, vous pouvez utiliser les commandes suivantes pour importer une base de données:

mysql -u <username> -p <databasename> < <filename.sql>
Wolfack
la source
1

Le moyen le plus simple d'importer une base de données dans votre MYSQL à partir du terminal est effectué par le processus ci-dessous -

mysql -u root -p root database_name < path to your .sql file

Ce que je fais ci-dessus est:

  1. Entrer dans mysql avec mon nom d'utilisateur et mon mot de passe (ici c'est root& root)
  2. Après avoir entré le mot de passe, je donne le nom de la base de données où je veux importer mon fichier .sql. Veuillez vous assurer que la base de données existe déjà dans votre MYSQL
  3. Le nom de la base de données est suivi de <, puis du chemin d'accès à votre fichier .sql. Par exemple, si mon fichier est stocké dans Desktop, le chemin d'accès sera/home/Desktop/db.sql

C'est ça. Une fois que vous avez fait tout cela, appuyez sur Entrée et attendez que votre fichier .sql soit téléchargé dans la base de données respective

Ankit Saxena
la source
0

Il ne doit pas y avoir d'espace entre -p et le mot de passe

mysql -u [dbusername] -p[dbpassword] [databasename] < /home/serverusername/public_html/restore_db/database_file.sql

Je l'utilise toujours, ça marche parfaitement. Merci de poser cette question. Passez une bonne journée. Njoy :)

Kamlesh
la source
nous pouvons également définir ces paramètres dans le travail cron (tâche de planification) sur des serveurs partagés, dédiés et cloud pour réinitialiser ou importer automatiquement la base de données de temps en temps.
Kamlesh