程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> csv批量導入mysql命令

csv批量導入mysql命令

編輯: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'; 

希望多多交流!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved