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?
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;
Vous avez beaucoup d'options:
mysql -h hostname -u user database < path/to/test.sql
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
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.
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"
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.
mysql -u <your_user> - p
source file_name.sql
J'espère que cela t'aides.
Donnez le chemin du fichier .sql comme suit:
source c:/dump/SQL/file_name.sql;
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
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:
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
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.
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
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.
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.
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
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.