2013-05-01 15 views
0

我使用的mysqlimport得到從文本文件的行內的表很容易,像這樣:我可以使用的mysqlimport/LOAD DATA LOCAL INFILE存儲過程

mysqlimport -u root -p --local mytest employee.txt 

我能做到這一點從存儲過程?到目前爲止所有的嘗試都失敗了恐怕這隻能通過命令行來使用?目的是讓一個作業調用一個SP,這個SP從一個文本文件中提取行(製表符分隔),然後SP將每行與現有表進行比較,如果發現它將更新或插入。

感謝你

回答

1

存儲過程在服務器上執行並且無法訪問遠程文件系統。

這大致相當於一個叫LOAD DATA INFILE

LOAD DATA INFILE 'employee.txt' INTO TABLE mytest 

這需要employee.txt駐留在服務器上。 --local選項要求mysqlimport客戶端橋接該數據。

+0

謝謝你的時間。我不完全理解你對--local選項所說的話,這是什麼意思?你也說'LOAD DATA INFILE'employee.txt'INTO TABLE mytest'可以從存儲過程運行,只要在服務器上提供txt文件?最後,mysqlimport是否也要求文件在服務器上?謝謝 – Mat41 2013-05-01 22:40:56

+0

'--local'選項允許您將本地文件導入服務器,因爲服務器無法在沒有幫助的情況下從您的機器加載文件。存儲過程將僅限於在服務器上加載文件。 – tadman 2013-05-02 15:24:31

0

加載數據INFILE不適用於存儲的進程。你想使用Perl腳本或其他方式來做到這一點

+0

你會怎麼做? – Robert 2013-10-07 08:42:34

+0

參考: http://stackoverflow.com/questions/10737974/load-data-local-infile-gives-the-error-the-used-command-is-not-allowed-with-this – 2013-10-14 18:22:24