csv大量匯入mysql命令,csv匯入mysql

來源:互聯網
上載者:User

csv大量匯入mysql命令,csv匯入mysql

今天把從Kaggle上下載下來的csv資料匯入mysql,想做個統計分析,怎奈csv檔案有些大,所以只能用mysql 命令匯入,現mark下,以備以後不時之需:

1. 匯入:
基本文法:load data [low_priority] [local] infile 'file_name txt' [replace | ignore]into table tbl_name[character set gbk][fields[terminated by't'][OPTIONALLY] enclosed by ''][escaped by'\' ]][lines terminated by'n'][ignore number lines][(col_name, )]

匯入命令_example:

load data infile 'csv檔案路徑\\test.csv' replace into table 表名              fields terminated by ',' optionally enclosed by '"' lines terminated by '\n' ignore 1 lines(Id,@dummy,DayOfWeek,PdDistrict,Address,X,Y);

不要小看這個簡單的example,包含了很多東西;

第一行就是匯入檔案;

第二行參看文法就會發現有兩個詞:replace 和 ignore 。replaceignore關鍵詞控制對現有的唯一鍵記錄的重複的處理。如果你指定replace,新行將代替有相同的唯一索引值的現有行。如果你指定ignore,跳過有唯一鍵的現有行的重複行的輸入。如果你不指定任何一個選項,當找到重複鍵時,出現一個錯誤,並且文字檔的餘下部分被忽略。
所以我覺得現實情況下你的表設計主鍵,還是最好要不會重複的欄位;

第三~四行很簡單就是每個具體欄位內容之間是以逗號隔開的,那就以逗號分開。
erminated by描述欄位的分隔字元,預設情況下是tab字元(\t)
enclosed by描述的是欄位的括起字元,就是說欄位中如果有引號,就當做是欄位的一部分。
文法中還有一個是 escaped by, 它描述的是逸出字元。預設的是反斜線(backslash:\ )

第五行 lines terminated by是對每行進行分割,這裡要注意一個問題,如果csv檔案是在windows下產生,那分割用 ‘\r\n’,linux下用 ‘\n’。

第六行中 ignore 1 lines 是忽略第一行,因為第一行往往是欄位名,後邊括弧中有個欄位很特別 @dummy,它是說如果csv檔案中有個欄位我不想插進去,那就把對應欄位名變成@dummy。

PS:想順便插入匯入時間,就在最後加上set update_time=current_timestamp;

2. 匯出:

同時附帶上匯出命令:

select * from 表名into outfile '匯出路徑\\test.csv' fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\n'; 

希望多多交流!

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.