Mysql
 sql >> Database >  >> RDS >> Mysql

Come eseguire un processo in Swift 3.0 con input standard

Il < filename la sintassi è una funzionalità fornita dalla shell, non qualcosa con cui i programmi stessi si occupano mai.

Il modo corretto per gestirlo è costruire un FileHandle per la lettura da dumpFile.sql e quindi imposta quel FileHandle come standardInput proprietà del Process .

Come nota a margine, non so perché stai usando /usr/bin/env come percorso di avvio, poiché non ti affidi alla ricerca PATH o all'impostazione di variabili di ambiente.

let input = try FileHandle(forReadingFrom: URL(fileURLWithPath: "dumpFile.sql"))
let task = Process()
task.launchPath = "/usr/bin/mysql"
task.arguments = ["-h", "theHost", "-P", "3306", "-u", "root", "-pTheInlinePassword", "example_database"]
task.standardInput = input
task.launch()