Comment exécuter un script SQL dans MySQL?

Je veux exécuter un fichier texte contenant des requêtes SQL, en MySQL.

J’ai essayé d’exécuter le source /Desktop/test.sql et source /Desktop/test.sql 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 sur ce que je fais mal?

Si vous êtes sur la ligne de commande MySQL, mysql> vous devez déclarer le fichier SQL comme source .

 mysql> source \home\user\Desktop\test.sql; 

Vous avez beaucoup d’options:

  • utilisez le client en ligne de commande MySQL: mysql -h hostname -u user database < path/to/test.sql
  • Installez les outils MySQL GUI et ouvrez votre fichier SQL, puis exécutez-le
  • Utilisez phpmysql si la firebase database est disponible via votre serveur web

vous pouvez exécuter des instructions mysql qui ont été écrites dans un fichier texte en utilisant la commande suivante:

 mysql -u yourusername -p yourpassword yourdatabase < text_file 

Si votre firebase database n'a pas encore été créée, connectez-vous d'abord à votre compte mysql en utilisant:

 mysql -u yourusername -p yourpassword yourdatabase 

puis:

 mysql>CREATE DATABASE a_new_database_name 

puis:

 mysql -u yourusername -p yourpassword a_new_database_name < text_file 

ça devrait le faire!

Plus d'infos ici: http://dev.mysql.com/doc/refman/5.0/en/mysql-batch-commands.html

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 d’afficher sur la console), vous pouvez le faire:

 mysql -u yourusername -p yourpassword yourdatabase < query_file > results_file 

J’espère que cela aide quelqu’un.

Mon option préférée est de:

  mysql --user="username" --database="databasename" --password="yourpassword" < "filepath" 

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 @elcuco comment je suggère d'utiliser cette commande avec [espace] avant, il dira à bash de l'ignorer dans l'historique, cela fonctionnera dès la première fois.

au cas où il enregistrerait encore votre commande dans l’histoire, veuillez consulter les solutions suivantes:

Exécuter la commande sans la conserver dans l'historique

 mysql> source C:\Users\admin\Desktop\fn_Split.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,

 mysql> source C:\fn_Split.sql 

Donnez le chemin du fichier .sql comme:

 source c:/dump/SQL/file_name.sql; 

Voir dans l'image:

Il n’est jamais ~/.bash_history de passer l’argument de mot de passe directement à partir de la ligne de commande, il est enregistré dans le fichier ~/.bash_history et peut être accessible à partir d’autres applications.

Utilisez ceci à la place:

 mysql -u user --host host --port 9999 database_name < /scripts/script.sql -p Enter password: 

Très probablement, il vous suffit de changer le slash / blackslash: from

  \home\sivakumar\Desktop\test.sql 

à

  /home/sivakumar/Desktop/test.sql 

Donc, la commande serait:

 source /home/sivakumar/Desktop/test.sql 
 mysql -uusername -ppassword database-name < file.sql 

utilisez l’ invite suivante de la commande mysql

 source \\home\\user\\Desktop\\test.sql; 

N’utilisez pas de devis. Même si le chemin contient un espace (”), n’utilisez aucune citation .

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

  1. Accédez à mysql en utilisant:

mysql -u - p

  1. À l’invite mysql, entrez:

source file_name.sql

J’espère que cela t’aides.

Depuis que mysql -u yourusername -p yourpassword yourdatabase < text_file ne fonctionnait pas sur un serveur distant (Amazon EC2) ...

Assurez-vous que la firebase database est créée en premier.

Alors:

 mysql --host=localhost --user=your_username --password=your_password your_database_name < pathTofilename.sql 

Pour référence ultérieure, 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 n’est pas appelé “c”, interchangez simplement avec ce que votre lecteur est appelé. 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 le chemin d’access complet, l’extension .sql sur le nom du fichier, et si votre version insère des points-virgules, assurez-vous qu’elle existe et réessayez.

J’ai eu cette erreur et essayé tous les conseils que je pouvais 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 fonctionnait correctement.