Importer un fichier SQL dans mysql

191

J'ai une base de données appelée nitm. Je n'y ai créé aucun tableau. Mais j'ai un fichier SQL qui contient toutes les données nécessaires pour la base de données. Le fichier est celui nitm.sqlqui est au format C:\ drive. Ce fichier a une taille d'environ 103 Mo. J'utilise le serveur wamp.

J'ai utilisé la syntaxe suivante dans la console MySQL pour importer le fichier:

mysql>c:/nitm.sql;

Mais cela n'a pas fonctionné.

kushalbhaktajoshi
la source

Réponses:

406

Depuis la console mysql:

mysql> use DATABASE_NAME;

mysql> source path/to/file.sql;


assurez-vous qu'il n'y a pas de barre oblique avant le chemin si vous faites référence à un chemin relatif ... il m'a fallu un certain temps pour m'en rendre compte! lol

d -_- b
la source
36
Vous n'avez pas besoin d'une barre oblique avant le chemin si vous faites une référence relative. Si vous allez de la racine, vous le ferez, c'est/home/user/file.sql
Wes Johnson
5
Quel dommage qu'il n'y ait aucun moyen d'ajouter une réponse aux favoris :(
baldrs
4
Dans Chrome, ils sont appelés signets, et vous pouvez simplement cliquer sur l'étoile dans la barre d'adresse;)
Andrew
2
@ ArseniuszŁozicki ajoutez la question et vous pourrez atteindre la réponse :) c'est ce que je fais.
mandza
2
Juste pour ajouter à cette réponse que le path/to/file.sqlest le chemin du système de fichiers local où se trouve le client mysql . Il y a des moments où le serveur MySQL s'attend à ce que le chemin soit du côté du serveur, IE SELECT ... INTO OUTFILEqui dépose le fichier dans le chemin sur le serveur MySQL!
Devy
90

Enfin, j'ai résolu le problème. J'ai placé le fichier `nitm.sql` dans le fichier` bin` du dossier `mysql` et j'ai utilisé la syntaxe suivante.

C:\wamp\bin\mysql\mysql5.0.51b\bin>mysql -u root nitm < nitm.sql

Et cela a fonctionné.

kushalbhaktajoshi
la source
8
Cela ne vient pas de la console mysql comme OP l'a demandé, mais d'une console dans mysql. La réponse de Robert Anthony Tribiana décrit comment le faire à partir de la console mysql.
halfpastfour.am
Ce n'est pas la manière exacte de résoudre le problème, ce n'est pas une solution.
Ashish Ratan
4
Vous savez que c'est l'OP qui a répondu à ça?
Wes
Si votre mysql a besoin d'un mot de passe, alors la méthode ne fonctionnera pas, vous avez besoin de la réponse principale de @d -_- b
shellbye
52

Si vous utilisez wamp, vous pouvez essayer ceci. Tapez d' use your_Database_nameabord.

  1. Cliquez sur l'icône de votre serveur wamp puis recherchez MYSQL > MSQL Consolepuis exécutez-le.

  2. Si vous n'avez pas de mot de passe, appuyez simplement sur Entrée et tapez:

    mysql> use database_name;
    mysql> source location_of_your_file;

    Si vous avez un mot de passe, vous serez invité à entrer un mot de passe. Entrez d'abord votre mot de passe puis tapez:

    mysql> use database_name;
    mysql> source location_of_your_file;

location_of_your_file devrait ressembler à C:\mydb.sql

donc la recommandation est mysql> source C: \ mydb.sql;

Ce type d'importation de vidage SQL est très utile pour BIG SQL FILE.

J'ai copié mon fichier mydb.sqdans le répertoire C:.Il doit être en majuscule C: pour fonctionner

et c'est tout.

Robert Anthony Tribiana
la source
1
Cette réponse semble spécifique à WAMP alors que le code affiché fonctionne à partir de n'importe quel environnement exécutant MySQL où vous pouvez accéder à MySQL via un terminal ou une console.
halfpastfour.am
26

Dans Windows, si la suggestion ci-dessus vous donne une erreur (fichier introuvable ou db inconnu), vous pouvez doubler les barres obliques:

Dans la console mysql:

mysql> use DATABASE_NAME;

mysql> source C://path//to//file.sql;
user3219217
la source
1
Une seule barre oblique a fonctionné pour moi dans ma machine Windows.
Manoj Shrestha
17

D'accord, j'utilise Linux mais je pense que cela est également vrai pour Windows. Vous pouvez le faire soit directement à partir de l'invite de commande

> mysql -u <user name> -p<password> <database name> < sqlfilename.sql

Ou depuis l'invite mysql, vous pouvez utiliser:

mysql>source sqlfilename.sql

Mais ces deux approches ont leurs propres avantages dans les résultats qu'elles affichent. Dans la première approche, le script se ferme dès qu'il rencontre une erreur. Et la meilleure partie, c'est qu'il vous indique le numéro de ligne exact dans le fichier source où l'erreur s'est produite. Cependant, il affiche UNIQUEMENT les erreurs. S'il ne rencontre aucune erreur, les scripts affichent RIEN. Ce qui peut être un peu déconcertant. Parce que vous exécutez le plus souvent un script avec toute une pile de commandes.

Maintenant, la deuxième approche (à partir de l'invite mysql) a l'avantage d'afficher un message pour chaque commande MySQL différente dans le script. S'il rencontre des erreurs, il affiche le message d'erreur mysql mais continue à travers les scripts. Cela peut être utile, car vous pouvez ensuite revenir en arrière et corriger toutes les erreurs avant d'exécuter à nouveau le script. L'inconvénient est qu'il n'affiche PAS les numéros de ligne dans le script où les erreurs ont été rencontrées. Cela peut être un peu pénible. Mais les messages d'erreur sont aussi descriptifs, vous pouvez donc probablement déterminer où se situe le problème.

Pour ma part, je préfère l'approche en ligne de commande directement à partir du système d'exploitation.

Peterb
la source
9

Si vous utilisez xampp

C:\xampp\mysql\bin\mysql -uroot -p nitm < nitm.sql
Nanhe Kumar
la source
7

Vous êtes presque là utiliser

mysql> \. c:/nitm.sql;

Vous pouvez également accéder à l'aide en

mysql> \?
Lmwangi
la source
1
Cela n'a pas fonctionné. Quand j'ai utilisé mysql> \. c: /nitm.sql; , il a jeté une erreur comme Impossible d'ouvrir le fichier 'c: \ nitm.sql;', erreur: 2
kushalbhaktajoshi
Avez-vous essayé des variantes de cela? Certaines applications respectent C: \ nitm.sql
Lmwangi
Notez également que le point-virgule à la fin n'est pas obligatoire. Alors supprimez-le. Une autre option est 'cd c:' puis essayez "\. Nitm.sql"
Lmwangi
1
Veuillez réfléchir avant de taper. 'cd c:' est la commande de l'invite DOS et non de la console mySql.
kushalbhaktajoshi
1
mysql> \. ~/Downloads/backups/file.sql fonctionnait parfaitement dans mysql> et à partir de la coosalréponse du terminal fonctionnait également.
gmuhammad le
6

Pour localhost sur XAMPP. Ouvrez une fenêtre cmd et tapez

cd C:\xampp\mysql\bin
mysql.exe -u root -p

Attention! Pas de point-virgule après -p Entrez votre mot de passe et tapez

use database_name;

pour sélectionner la base de données dont vous avez besoin.

Vérifiez si votre table est là

show tables;

Importez depuis votre fichier SQL

source sqlfile.sql;

J'ai mis mon fichier sur l'emplacement C: \ xampp \ mysql \ bin afin de ne pas mélanger avec les emplacements du fichier sql.

Adrian P.
la source
4

Essayer:

mysql -u username -p database_name < file.sql

Vérifiez les options MySQL .

Remarque: il est préférable d'utiliser le chemin complet du fichier SQL file.sql.

Akshay Pethani
la source
3

N'oubliez pas d'utiliser

charset utf8

Si votre fichier sql est dans utf-8 :)

Vous devez donc faire:

cmd.exe

mysql -u racine

mysql> jeu de caractères utf8

mysql> utilisez mydbname

mysql> source C: \ mon dossier \ monfichier.sql

Bonne chance ))

Олег Всильдеревьев
la source
3

Sous Linux, j'ai navigué vers le répertoire contenant le fichier .sql avant de démarrer mysql. Le curseur système est maintenant au même emplacement que le fichier et vous n'aurez pas besoin d'un chemin. Utilisez source myData.sql où ma date est remplacée par le nom de votre fichier.

cd whatever directory

mysql - p

connecter targetDB

source myData.sql

Terminé

Robert Quinn
la source
2

depuis la ligne de commande (cmd.exe, pas depuis le shell mysql), essayez quelque chose comme:

type c:/nite.sql | mysql -uuser -ppassword dbname
Omry Yadan
la source
Je n'ai créé aucun mot de passe pour la base de données, il est donc vide dans le champ du mot de passe. Et j'ai utilisé la syntaxe ci-dessus comme ceci c: /nitm.sql | mysql -u root -p nitm mais cela ne fonctionnait pas non plus. Pouvez-vous m'aider un peu plus?
kushalbhaktajoshi
Omettre -p ne fonctionnait pas non plus. Cette erreur lancée comme «c:» n'est pas reconnue comme une commande interne ou externe, un programme utilisable ou un fichier de commandes.
kushalbhaktajoshi
2

Votre vidage contient-il des fonctionnalités qui ne sont pas prises en charge dans votre version de MySQL? Vous pouvez également essayer de supprimer les instructions SET de début (et de fin) commentées par MySQL.

Je ne sais pas si votre vidage provient d'une version Linux de MySQL (fins de ligne)?

Maickel
la source
J'ai déjà supprimé les instructions SET commentées par mysql. Mais l'erreur se produit toujours.
kushalbhaktajoshi
Vous pouvez essayer de vous connecter au shell de commande MySQL et à l'instruction use then: "source c: \ nite.sql". N'oubliez pas de sélectionner la bonne base de données.
Maickel
J'apprécie vraiment votre effort. Merci.
kushalbhaktajoshi
2

J'ai installé mon serveur wamp dans D: drive donc vous devez aller au chemin suivant à partir de votre ligne de commande -> (et si vous avez installé votre wamp dans c: drive, remplacez simplement le d: wtih c: here)

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)
D:\wamp\bin\mysql\mysql5.5.8>cd bin
D:\wamp\bin\mysql\mysql5.5.8\bin>mysql -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 pour phpmyadmin donc si vous n'avez pas défini de mot de passe pour root, tapez simplement rien à cet endroit, db_name est la base de données (pour laquelle la base de données vous prenez la sauvegarde), backupfile.sql est le fichier à partir duquel vous voulez une sauvegarde de votre base de données et vous pouvez également changer l'emplacement du fichier de sauvegarde (d: \ backupfile.sql) à partir de n'importe quel autre endroit sur votre ordinateur

Sachin
la source
1
mysql>c:/nitm.sql;

Cela écrirait la sortie de la commande mysql dans 'nitm.sql;' (Qu'est-ce que le ';' est censé faire?) En supposant que vous ayez une copie du fichier original (avant de l'écraser), alors:

mysql < c:/nitm.sql
symcbean
la source
Cela n'a pas fonctionné non plus. Il a jeté une erreur comme ERROR 1064 <42000>: Vous avez une erreur dans votre syntaxe SQL; vérifiez le manuel qui correspond à votre version de serveur MySql pour la bonne syntaxe à utiliser près de «mysql <c: /nitm.sql» à la ligne 1
kushalbhaktajoshi
1

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 ...

Importer toutes les bases de données exportées vers une instance Mysql particulière (vous devez être là où se trouve votre fichier de vidage)

djimi:> mysql --user=root --host=localhost --port=3306 --password=test < ccr_kit_local.sql
Musa
la source
0

Dans le système d'exploitation Windows, les commandes suivantes fonctionnent pour moi.

mysql>Use <DatabaseName>
mysql>SOURCE C:/data/ScriptFile.sql;

Pas de guillemets simples ou doubles autour du nom de fichier. Le chemin contiendrait «/» au lieu de «\».

Pabitra Dash
la source
0

Pour ceux d'entre vous qui ont du mal à y parvenir, essayez toutes les réponses possibles que vous pouvez trouver sur SO. Voici ce qui a fonctionné pour moi sur un VPS exécutant Windows 2012 R2:

  1. Placez votre fichier sql là où se trouve le bac pour moi où il se trouve C:\Program Files\MySQL\MySQL Server 8.0\bin

  2. Ouvrez l'invite de commande Windows (cmd)

  3. Courir C:\Program Files\MySQL\MySQL Server 8.0\bin > mysql -u [username] -p
  4. Tapez votre mot de passe
  5. Exécuter la commande use [database_name];
  6. Importez votre fichier avec la source de commande C://Program Files//MySQL//MySQL Server 8.0//bin//mydatabasename.sql

Il l'a fait pour moi car tout le reste avait échoué. Cela pourrait aussi vous aider.

utilisateur45678
la source