Je veux exécuter un fichier texte contenant des requêtes SQL, dans MySQL.
J'ai essayé de courir source /Desktop/test.sql
et j'ai reçu l'erreur:
mysql>. \ home \ sivakumar \ Desktop \ test.sql ERREUR: impossible d'ouvrir le fichier '\ home \ sivakumar \ Desktop \ test.sql', erreur: 2
Une idée de ce que je fais mal?
mysql
command-line
user1160432
la source
la source
Réponses:
Si vous êtes sur la ligne de commande MySQL,
mysql>
vous devez déclarer le fichier SQL commesource
.la source
\
avant l'espace ou envelopper le nom de fichier avec"
.Vous avez beaucoup d'options:
mysql -h hostname -u user database < path/to/test.sql
la source
-p
option, ce n'est pas recommandé: d'autres utilisateurs sur le même hôte peuvent utiliser des outils système commeps
pour le lire dans ce cas.-p
sans argument vous invite à entrer le mot de passe sur la ligne suivantevous pouvez exécuter des instructions mysql écrites dans un fichier texte à l'aide de la commande suivante:
si votre base de données n'a pas encore été créée, connectez-vous d'abord à votre mysql en utilisant:
puis:
puis:
ça devrait le faire!
Plus d'informations ici: http://dev.mysql.com/doc/refman/5.0/en/mysql-batch-commands.html
la source
mysql -u yourusername -p"yourpassword"
Mon option préférée pour ce faire sera:
Je l 'utilise de cette façon parce que lorsque vous l' enchaînez avec "" vous évitez le mauvais chemin et les erreurs avec les espaces et - et probablement plus de problèmes avec les caractères que je n'ai pas rencontrés.
Avec le commentaire @elcuco, je suggère d'utiliser cette commande avec [espace] avant afin de dire à bash d'ignorer de l'enregistrer dans l'historique, cela fonctionnera par défaut dans la plupart des bash.
dans le cas où il enregistre toujours votre commande dans l'historique, veuillez consulter les solutions suivantes:
Exécuter une commande sans la conserver dans l'historique
modification de sécurité supplémentaire
Au cas où vous voudriez être plus sûr, vous pouvez utiliser la commande suivante et entrer le mot de passe dans la ligne de commande:
la source
Toutes les meilleures réponses sont bonnes. Mais juste au cas où quelqu'un voudrait exécuter la requête à partir d'un fichier texte sur un serveur distant ET enregistrer les résultats dans un fichier (au lieu de l'afficher sur la console), vous pouvez le faire:
J'espère que cela aide quelqu'un.
la source
-p
et le mot de passeSELECT ... INTO OUTFILE /path/to/file.csv
c'est un moyen plus efficace. Voir les options et la syntaxe ici - dev.mysql.com/doc/refman/5.7/en/select-into.htmlDonnez le chemin du fichier .sql comme:
la source
Je suis venu ici à la recherche de cette réponse également, et voici ce que j'ai trouvé qui fonctionne le mieux pour moi: Remarque: j'utilise Ubuntu 16.xx
mysql -u <your_user> - p
source file_name.sql
J'espère que cela t'aides.
la source
mysql -u<user> -p -e 'source filename.sql'
Ne spécifiez pas de guillemets simples.
Si la commande ci-dessus ne fonctionne pas, copiez le fichier sur le lecteur c: et réessayez. comme indiqué ci-dessous,
la source
Il n'est jamais recommandé de passer l'argument du mot de passe directement à partir de la ligne de commande, il est enregistré dans le
~/.bash_history
fichier et peut être accessible à partir d'autres applications.Utilisez-le à la place:
la source
la source
Très probablement, il vous suffit de changer la barre oblique / barre oblique noire: de
à
La commande serait donc:
la source
utilisez ce qui suit à partir de l' invite de commande mysql -
N'utilisez aucun devis. Même si le chemin contient de l'espace (''), n'utilisez aucune citation du tout .
la source
au lieu de la redirection, je ferais ce qui suit
Cela exécutera le chemin du fichier vers le fichier sql
la source
Tant de façons de le faire.
Si vous obtenez des erreurs de la ligne de commande, assurez-vous que vous avez déjà exécuté
Cela doit être exécuté à partir du répertoire mysqld.exe, d'où le CD.
J'espère que cela est utile et pas seulement redondant.
la source
Depuis
mysql -u yourusername -p yourpassword yourdatabase < text_file
ne fonctionnait pas sur un serveur distant (EC2 d'Amazon) ...Assurez-vous que la base de données est créée en premier.
Alors:
la source
Pour référence future, j'ai trouvé que cela fonctionnait par rapport aux méthodes susmentionnées, sous Windows dans votre console msql:
mysql >>
source c://path_to_file//path_to_file//file_name.sql;
Si votre lecteur racine ne s'appelle pas "c", échangez simplement avec le nom de votre lecteur. Essayez d'abord les barres obliques inverses, si elles ne fonctionnent pas, essayez la barre oblique. S'ils ne fonctionnent pas non plus, assurez-vous d'avoir votre chemin de fichier complet, l'extension .sql sur le nom du fichier, et si votre version insiste sur les points-virgules, assurez-vous qu'il est là et réessayez.
la source
J'ai eu cette erreur et j'ai essayé tous les conseils que j'ai pu obtenir en vain.
Enfin, le problème était que mon dossier avait un espace dans le nom du dossier qui apparaissait comme une barre oblique dans le chemin du dossier, une fois que je l'ai trouvé et supprimé, cela a bien fonctionné.
la source