2015-07-06 39 views

回答

0

我現在已經找到了一個解決這個問題。我避免了「<」的象徵,所以我們可以使用它代替命令:

spawn mysql -u root -h localhost -proot dbTest -Bse "source temp.sql" 
1

人們傾向於使用sqldump和mysqldump。我喜歡在下面的鏈接,說rubbish與phpMyAdmin報價:

how to import a very large query over phpmyadmin?

關於cronexpect ...

我知道的cron有困難的日期說,經常是什麼在起作用在命令行有被推到一個bash腳本中以便於工作。然後cron運行.sh腳本與嵌入字符串。

此外,它是從2個小時前你的一個重複的問題。

+0

所以再次感謝你,是我在更好的方式又寫了。嗯,你是對的,我可以用命令創建一個.sh文件並從期望中調用它。這實際上很長,但我會嘗試。 –

+0

看看tcl大括號{},也許圍繞着我不知道的'<'符號。祝你好運 – Drew

+0

不幸的是,它不工作。但是,我對這個問題得到了兩個更正確的答案。 thanx再次 –

1

spawn不支持<方向,但你可以這樣做:

spawn sh -c "mysql -u root -h localhost -proot dbTest < temp.sql" 

好像要在非交互方式運行mysql所以你也可以使用Expectsystem命令:

system "mysql -u root -h localhost -proot dbTest < temp.sql" 

Tcl或的exec命令:

exec mysql -u root -h localhost -proot dbTest <temp.sql>@ stdout 2>@ stderr 

你可能需要把整個systemexec命令在catch塊,以防mysql失敗:

catch {system "mysql ..."} catched 
# or 
catch {exec mysql ...} catched 
+0

是的,它運作良好,這真是一個不錯的選擇。另外,它也會在未來幫助我。 –

+0

真棒無論什麼作品 – Drew

相關問題