MySQL的load data infile
在MySQL中,我们经常需要将大量数据导入到数据库中。如果手动一条一条地插入数据,效率会非常低下。为了解决这个问题,MySQL提供了一个非常方便的工具和语法,即"load data infile"。通过该语法,我们可以将数据从文件中快速地导入到MySQL数据库中。
什么是load data infile
"load data infile"是MySQL的一个用于导入数据的命令。它允许我们从一个文本文件中读取数据,并将其插入到指定的表中。
load data infile的语法
load data infile语法如下所示:
load data infile '文件路径'
into table 表名
[character set 字符集]
[fields
[terminated by '分隔符']
[enclosed by '引号']
[escaped by '转义符']
]
[lines
[starting by '行起始符']
[terminated by '行结束符']
]
[ignore number lines]
(column1, column2, ...)
其中,方括号内的内容表示可选项。
文件路径
:指定要导入的文件路径。表名
:指定要导入数据的目标表名。character set 字符集
:指定文件的字符集,如果不指定,默认使用数据库的字符集。fields
:指定字段的分隔符、引号和转义符。terminated by '分隔符'
:指定字段的分隔符,默认为制表符。enclosed by '引号'
:指定字段的引号,默认为空。escaped by '转义符'
:指定字段的转义符,默认为反斜杠。
lines
:指定行的起始符和结束符。starting by '行起始符'
:指定行的起始符,默认为空。terminated by '行结束符'
:指定行的结束符,默认为换行符。
ignore number lines
:忽略文件的前几行。(column1, column2, ...)
:指定要导入的字段,如果不指定,默认导入所有字段。
load data infile的使用
首先,我们需要准备一个文本文件,该文件包含要导入的数据,每行表示一条记录,字段之间使用指定的分隔符分隔。
假设我们有一个名为"students"的表,该表包含"姓名"和"年龄"两个字段。我们的文本文件如下所示:
Jim,18
Lily,20
Tom,22
现在,我们可以使用"load data infile"将这些数据导入到"students"表中:
load data infile '/path/to/file.txt'
into table students
fields terminated by ','
上述语句将会将文本文件中的数据插入到"students"表中。
字段的分隔符
在上面的示例中,我们使用逗号作为字段的分隔符,通过fields terminated by ','
来指定。如果文本文件中的字段使用的是其他分隔符,比如制表符,我们可以使用fields terminated by '\t'
来指定。
忽略文件的前几行
有时,文件的开头几行可能是文件的注释或者其他无效数据,我们可以通过ignore number lines
来忽略这些行。
例如,我们的文本文件的前两行是注释,我们可以使用以下语句来导入数据:
load data infile '/path/to/file.txt'
into table students
fields terminated by ','
ignore 2 lines
指定要导入的字段
如果文本文件中的字段顺序和目标表的字段顺序不一致,或者只需要导入部分字段,我们可以通过指定要导入的字段来解决。
假设我们的文本文件的字段顺序是"年龄, 姓名",我们可以使用以下语句来导入数据:
load data infile '/path/to/file.txt'
into table students
fields terminated by ','
(@age, @name)
set age = @age, name = @name
上述语句中,我们使用(@age, @name)
来指定文本文件中的字段顺序,然后使用set age = @age, name = @name
将字段