web-dev-qa-db-fra.com

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é de lancer 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 sur ce que je fais mal?

340
user1160432

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

mysql> source \home\user\Desktop\test.sql;
381
Thomas Edwards

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 de l'interface graphique MySQL et ouvrez votre fichier SQL, puis exécutez-le.
  • Utilisez phpmysql si la base de données est disponible via votre serveur Web
135
Eugen Rieck

vous pouvez exécuter des instructions mysql écrites dans un fichier texte à l'aide de la commande suivante:

mysql -u yourusername -p yourpassword yourdatabase < text_file

si votre base de données n'a pas encore été créée, connectez-vous d'abord à votre mysql en utilisant:

mysql -u yourusername -p yourpassword yourdatabase

ensuite:

mysql>CREATE DATABASE a_new_database_name

ensuite:

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

115
Paul Preibisch

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

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

J'espère que ça aide quelqu'un.

47
Bhushan

Mon option préférée pour le faire sera:

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

Je l’utilise de cette façon parce que lorsque vous le "" vous évitez les mauvais chemins et les erreurs d’espace et - et probablement plus de problèmes de caractère que je n’ai pas rencontrés.


Avec @elcuco comment, je suggère d'utiliser cette commande avec [space] avant pour indiquer à bash de ne pas l'enregistrer dans l'historique, cela fonctionnera sans problème dans la plupart des bash.

au cas où votre commande serait toujours sauvegardée dans l’historique, veuillez visualiser les solutions suivantes:

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


édition de sécurité supplémentaire

Juste au cas où vous voudriez être plus sûrs, vous pouvez utiliser la commande suivante et entrer le mot de passe dans la ligne de commande:

mysql --user="username" --database="databasename" -p < "filepath"
40
talsibony

Je suis aussi venu ici pour chercher cette réponse, et voici ce que j'ai trouvé fonctionne le mieux pour moi: Remarque: j'utilise Ubuntu 16.x.x.

  1. Accédez à mysql en utilisant:

mysql -u <your_user> - p

  1. À l'invite mysql, entrez:

source file_name.sql

J'espère que cela t'aides.

16
Zac Smith

Donnez le chemin du fichier .sql comme suit:

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

See In The Image:

15
Shubham Verma
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
14

Il n'est jamais recommandé 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:
11
Jorge E. Hernández
mysql -uusername -ppassword database-name < file.sql

Très probablement, il vous suffit de changer le slash/backslash: à partir de

 \home\sivakumar\Desktop\test.sql

à

 /home/sivakumar/Desktop/test.sql

Donc, la commande serait:

source /home/sivakumar/Desktop/test.sql
8
Ben Lin

utilisez ce qui suit à partir de invite de la commande mysql -

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

N'utilisez aucune citation. Même si le chemin contient un espace ('') utilise aucune citation.

6
Rajesh Paul

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

Ensuite:

mysql --Host=localhost --user=your_username --password=your_password your_database_name < pathTofilename.sql
3
Damir Olejar

Pour référence future, j'ai constaté 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. Commencez par essayer les barres obliques inverses. Si elles ne fonctionnent pas, essayez la barre oblique. S'ils ne fonctionnent pas non plus, vérifiez que vous avez le chemin d'accès complet au fichier, l'extension .sql sur le nom du fichier, et si votre version insiste sur les points-virgules, assurez-vous qu'il est présent et réessayez.

3
Chad Mx

Tant de façons de le faire.

From Workbench: File > Run SQL Script -- then follow prompts

From Windows Command Line:
   Option 1: mysql -u usr -p
             mysql> source file_path.sql
   Option 2: mysql -u usr -p '-e source file_path.sql'
   Option 3: mysql -u usr -p < file_path.sql
   Option 4: put multiple 'source' statements inside of file_path.sql (I do this to drop and recreate schemas/databases which requires multiple files to be run)
             mysql -u usr -p < file_path.sql

Si vous obtenez des erreurs de la ligne de commande, assurez-vous que vous avez déjà exécuté

cd {!!>>mysqld.exe home directory here<<!!}
mysqld.exe --initialize 

Cela doit être exécuté à partir du répertoire mysqld.exe, d'où le CD.

J'espère que c'est utile et pas seulement redondant.

1
DonkeyKong

au lieu de la redirection je ferais ce qui suit

mysql -h <hostname> -u <username> --password=<password> -D <database> -e 'source <path-to-sql-file>'

Ceci exécutera le fichier path-to-sql-file

1
DWGuru

J'ai eu cette erreur et j'ai 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 a fonctionné correctement.

0
user3753416