我有一個外殼腳本 的MySQL --local-infile的= 1 -h爲myhost -P MyPort上-u我< ./loader_file.sql階系統調用到MySQL失敗
當我直接在命令行運行這,它的效果很好。數據被加載到數據庫中。
但Scala代碼
val myScript = "mysql --local-infile=1 -h myhost -P myport -u me" #< "loader_file.sql"
myScript !
我得到一個錯誤信息說我在外殼MySQL的命令,如「使用」和「負荷」裏面都沒有找到。顯然,shell將loader_file.sql解釋爲bash命令,而不是mysql命令。
但如果我納入整個字符串作爲一個命令
val myScript = "mysql --local-infile=1 -h myhost -P myport -u me < loader_file.sql"
然後我得到一個MySQL轉儲其所有的有效選項。顯然,mysql認爲我餵它非法的輸入參數。
任何人都知道如何解決這個問題?
我知道了將整個myScript字符串封裝到一個shell腳本myscript.sh中,然後調用myscript.sh!我很好奇,但如果有一種方法可以直接調用它。所以我會把這個開放給任何知道這一點的人。 – bhomass
必須是在這個問題相同的問題:http://stackoverflow.com/questions/21247653/using-scala-sys-process-with-curl-single-quotes-and-white-space(見我的答案)。此外,所有這些特殊的管道符號都是特定於外殼的,可能無法正確擴展。 –