一.语法介绍
LOAD DATA
[LOW_PRIORITY | CONCURRENT] [LOCAL]
INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[PARTITION (partition_name [, partition_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
[, col_name_or_user_var] ...)]
[SET col_name={expr | DEFAULT},
[, col_name={expr | DEFAULT}] ...]
该LOAD DATA
语句以非常高的速度将文本文件中的行读入表中。 LOAD DATA
是补充 SELECT ... INTO OUTFILE
。要将表中的数据写入文件,请使用 SELECT ... INTO OUTFILE
。要将文件读回表中,请使用 LOAD DATA
。两个语句的FIELDS
和LINES
子句的语法 相同。
更多的相关内容,大家可以参照官网
二.数据分隔符
- fields关键字指定了文件记段的分割格式,如果用到这个关键字,MySQL剖析器希望看到至少有下面的一个选项:
terminated by 以什么字符作为分隔符
enclosed by 字段闭合标签
escaped by 转义字符
terminated by 描述字段的分隔符,默认情况下是tab字符(\t)
enclosed by 描述的是字段的括起字符。
escaped by 描述的转义字符。默认的是反斜杠(backslash:\ ) - lines 关键字指定了每条记录的分隔符默认为’\n’即为换行符 (不指定一个lines子句,缺省值默认写的如: lines terminated by’\n’)
- [IGNORE number LINES] 忽略特定行数,CSV文件可以忽略掉第一行标题
三.实战
示例1:LOAD DATA LOCAL INFILE导入txt文件
1.1数据准备
首先我们创建一个milo.xlsx
文件,准备数据如下图:
然后新建milo.txt
文件,将数据复制过去;
接下来,我们需要在自己本地库创建对应的数据表
**注意:**需要注意表字段需要对应数据中的id和name;
1.2 数据导入
load data local infile 'F:\\milo.txt'
into table test
fields terminated by '\t'
lines terminated by '\n'
ignore 1 lines
(id,name);
1.3结果
示例2:LOAD DATA LOCAL INFILE导入csv文件
2.1数据准备
首先我们创建milo.csv
文件,如下图所示
2.2数据导入
LOAD DATA LOCAL INFILE 'F:\\milo.csv' INTO TABLE test
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(id, name)
2.3结果
三.相关问题
在测试过程中,大家可能会遇到各种问题,可以参考这篇博客解决:https://blog.csdn.net/ShoneX98/article/details/85230721