我正在將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)
我正在將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)
這是因爲MySQL正在使用的系統帳戶無權讀取此文件。
如果您未指定LOCAL
該文件正由MySQL 服務器進程直接讀取,並且必須有權讀取此文件。
當您添加LOCAL
該文件正在由MySQL 客戶端程序不是服務器進程,並在你的情況看顯然有訪問您的CSV文件,這是我相信是位於某處的帳戶下的用戶目錄你正在工作。
如果你把這個文件放到MySQL進程有權讀取的目錄中(例如/tmp/myfile.csv
)LOAD DATA INFILE
就可以正常工作。
LOAD DATA INFILE
local關鍵字會影響該文件是 預期發現:
- 如果指定了LOCAL,該文件被閱讀客戶端程序客戶端主機上,併發送到服務器。該文件可以作爲完整的 路徑名稱來指定其確切位置。如果以相對路徑 名稱的形式給出,則名稱將相對於啓動客戶端程序的目錄進行解釋。
- 如果未指定LOCAL,則該文件必須位於服務器主機上,並且由服務器直接讀取。
雖然我確實將目錄和數據文件的權限更改爲777,那麼不應該沒有本地工作? –
你使用絕對路徑還是相對路徑? – peterm
我正在使用絕對路徑。 mysql正在我的本地機器上運行。我的桌面上有一個文件夾,權限爲777,我做了LOAD DATA INFILE'/ home/me/Desktop/data/myfile.csv',數據和myfile.csv的權限爲777 –
查看這些最好的地方是在MySQL文檔。退房http://dev.mysql.com/doc/refman/5.1/en/load-data.html
的--local選項使得mysqlimport讀取來自 客戶端主機的數據文件。
實際上,我投票這是一個重複的http://stackoverflow.com/questions/3971541/what-file-and-directory-permissions-are-required-for-mysql-load-data- infile –