MySQL 匯入(import) 大容量檔案方法

在這大數據的時代,一筆資料動輒都好幾TB起跳,百萬級的檔案已經算是小case了。

然而若在使用MySQL時,一個好幾百MB的資料,若是使用它內建的匯入精靈,那速度可是會慢到讓人崩潰的。

因此在匯入大檔案時,通常大家會用到(以csv為例):

LOAD DATA INFILE 'path'
INTO TABLE table_name
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;


 然而在執行後可能會遇到以下的錯誤:

The MySQL server is running with the --secure-file-priv option so it cannot execute this statement    0.000 sec
 

這其實是因為MySQL本身只提供使用者在規定的資料夾中讀取資料,因此除了把這功能關掉以外,最方便的方法就是將資料放進該指定的資料夾即可。

至於資料夾在哪邊,只要執行以下query就可以得到確切位置了:

SELECT @@global.secure_file_priv; 

通常都是在 C:\ProgramData\MySQL\MySQL Server X.X\Uploads 下,但保險起見還是執行一下指令看看吧!

至於若想更改該資料夾位置甚至是關掉的話,請到 C:\ProgramData\MySQL\MySQL Server X.X\下,修改my.ini檔案就行了。

PS.在sql中的路徑符號必須是 "/"唷,用"\"是不會過的 

留言

這個網誌中的熱門文章

(C) 簡單搞懂指標(pointer)、指標陣列(pointers of array, int *foo[]) 與指向陣列的指標 (pointer to array, int (*bar)[])

(c/c++) Function Pointer函式指標兩三事 (Function Pointer 的 typedef 與 Array of Function Pointer)

(C++) 別再用dynamic array與pointer了! 趕快學STL的vector與iterator!