1. 程式人生 > 資料庫 >MySQL匯入csv、excel或者sql檔案的小技巧

MySQL匯入csv、excel或者sql檔案的小技巧

1.匯入csv檔案

使用如下命令:

 1.mysql> load data infile "your csv file path" into table [tablename] fields terminated by ','

上面的csv檔案以','逗號作為分割符,需要用雙引號或者單引號括起來。如果是以'\t'製表符作為分隔符的話,可不用顯示指明域分割符。

還有一點需要注意,csv檔案或者文字檔案的路徑要使用絕對路徑,否則mysql會預設從資料庫儲存的目錄尋找,找不到就會報如下錯誤:

ERROR 13 (HY000) at line 1: Can't get stat of '/var/lib/mysql/PromotionGroup/attempt_1467708933142_34285938_m_000000_0.1469434545564' (Errcode: 2)

perror 2檢視一下錯誤碼代表的意思:OS error code 2: No such file or directory。意思就是沒有指定的檔案或者目錄。

如果使用絕對路徑之後還是會報如下錯誤:

ERROR 13 (HY000) at line 1: Can't get stat of '/fullpath/file.csv' (Errcode: 13)

使用命令perror 13檢視錯誤型別:OS error code 13: Permission denied。根據錯誤的提示,順其自然的檢查檔案是否有可讀許可權,結果是有的,於是各種百度都沒有得到正確的答案,百思不得其解,最終選擇google在stackoverflow找到了我想要的答案。

Try to use LOAD DATA LOCAL INFILE instead of LOAD DATA INFILE.

使用LOAD DATA LOCAL INFILE嘗試一下,結果真的可以了!

load data local infile與load data infile的區別是什麼呢?

使用LOCAL關鍵詞,從客戶主機讀檔案。不使用LOCAL,從伺服器讀取檔案。

很奇怪的是,我的檔案是在伺服器上的,但是不使用local就會出錯,真搞不明白!

2.匯入excel檔案

無需指定分割符。直接使用下面的命令:

mysql> load data infile "your excel file path" into table [tablename]

注意上面匯入檔案時,都需要提前建立好與檔案內各個段對應好的資料表。並且檔案的路徑需要使用引號括起來,雙引號和單引號都可以。

3.匯入sql檔案

無需提前建立好資料表,直接使用source命令:

source /home/abc/abc.sql;

sql指令碼無需雙引號括起來。本質上使用source執行外部sql指令碼,sql指令碼會將sql指令碼中附帶的資料匯入到建立的資料表中。

以上所述是小編給大家介紹的MySQL匯入csv、excel或者sql檔案的小技巧,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對我們網站的支援!