csv文本格式数据导入MySQL的方法

LOAD DATA INFILE是从一个文本文件中以很高的速度读入一个数据表中的方法,具体语法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS}
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
[IGNORE number {LINES | ROWS}]
[(col_name_or_user_var,...)]
[SET col_name = expr,...]

LOW_PRIORITY 指定关键字LOW_PRIORITY,MySQL将会等到没有其他人读这个表的时候,才把插入数据.
LOCAL 从本地客户端读取数据;如果没有指定LOCAL,文件必须位于服务器上.
REPLACE和IGNORE关键词控制对现有的唯一键记录的重复的处理。如果你指定REPLACE,新行将代替有相同的唯一键值的现有行。如果你指定IGNORE,跳过有唯一键的现有行的重复行的输入。如果你不指定任何一个选项,当找到重复键时,出现一个错误,并且文本文件的余下部分被忽略.
FIELDS 关键字指定了文件字段的分割格式,如果用到这个关键字,MySQL剖析器希望看到至少有下面的一个选项:
TERMINATED BY分隔符:意思是以什么字符作为分隔符
ENCLOSED BY字段括起字符
ESCAPED BY转义字符
TERMINATED BY描述字段的分隔符,默认情况下是tab字符(\t)
ENCLOSED BY描述的是字段的括起字符。
ESCAPED BY描述的转义字符。默认的是反斜杠(backslash:\)
LINES 关键字指定了每条记录的分隔格式。
STARTING BY 描述每条记录的开始字符
TERMINATED BY 描述每条几轮的分隔符,默认是(\n)
IGNORE number {LINES | ROWS} 指定忽略的行或者列

举个例子:

1
2
3
4
LOAD DATA LOCAL INFILE '/users/Shaun/desktop/yw2015.csv' 
INTO TABLE yw2015j CHARACTER SET GBK
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n';