Je veux exécuter des scripts SQL en utilisant la méthode Runtime.exec de Java. J'ai l'intention d'invoquer mysql.exe/mysql.sh et de rediriger le fichier script vers ce processus. À l'invite de commande que je peux exécuter la commandecomment rediriger stdin à java Runtime.exec?
<mysqInstallDir\/bin\mysql.exe -u <userName> -p <password> < scripts\create_tables.sql
je peux appeler à l'aide mysql.exe Runtime.exec mais comment puis-je rediriger les données du fichier sql à mysql.exe?
J'ai lu l'article dans http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page=4 et utilisé le mécanisme de StreamGobbler pour obtenir l'erreur et de sortie. Pas de problème là-bas. Le problème vient en lisant le fichier "scripts \ create_tables.sql" en utilisant BufferedReader et en passant le contenu au flux de sortie de prcess. Je m'attendais à ce que le processus transmette les données au fichier mysql.exe. Mais je vois que seule la première ligne est lue depuis ce fichier sql. Lorsque je fais cela, je vois que seule la première ligne de create_tables.sql est exécutée. Le code de sortie pour le processus est 0 et il n'y a pas d'erreur ou de sortie.
Et le flux d'erreur, bien sûr. Ou fusionnez les flux de sortie et d'erreur avec la méthode redirectErrorStream (boolean) de ProcessBuilder et lisez les flux fusionnés. –