2014-01-09 115 views
0

我正在將csv文件加載到本地主機上運行的mysql實例中。我可以使用LOAD DATA LOCAL INFILE語法來做到這一點,但我想知道的是,爲什麼我需要LOCAL如果服務器和文件在同一臺計算機上。沒有本地,我得到一個錯誤說:mysql load data infile localhost

ERROR 13 (HY000): Can't get stat of '/path/to/myfile.csv' (Errcode: 13) 
+0

實際上,我投票這是一個重複的http://stackoverflow.com/questions/3971541/what-file-and-directory-permissions-are-required-for-mysql-load-data- infile –

回答

1

這是因爲MySQL正在使用的系統帳戶無權讀取此文件。

如果您未指定LOCAL該文件正由MySQL 服務器進程直接讀取,並且必須有權讀取此文件。

當您添加LOCAL該文件正在由MySQL 客戶端程序不是服務器進程,並在你的情況看顯然有訪問您的CSV文件,這是我相信是位於某處的帳戶下的用戶目錄你正在工作。

如果你把這個文件放到MySQL進程有權讀取的目錄中(例如/tmp/myfile.csvLOAD DATA INFILE就可以正常工作。

LOAD DATA INFILE
local關鍵字會影響該文件是 預期發現:

  • 如果指定了LOCAL,該文件被閱讀客戶端程序客戶端主機上,併發送到服務器。該文件可以作爲完整的 路徑名稱來指定其確切位置。如果以相對路徑 名稱的形式給出,則名稱將相對於啓動客戶端程序的目錄進行解釋。
  • 如果未指定LOCAL,則該文件必須位於服務器主機上,並且由服務器直接讀取
+0

雖然我確實將目錄和數據文件的權限更改爲777,那麼不應該沒有本地工作? –

+0

你使用絕對路徑還是相對路徑? – peterm

+0

我正在使用絕對路徑。 mysql正在我的本地機器上運行。我的桌面上有一個文件夾,權限爲777,我做了LOAD DATA INFILE'/ home/me/Desktop/data/myfile.csv',數據和myfile.csv的權限爲777 –