MySQL中使用LOAD命令快速导入数据(mysql 中load)

MySQL中使用LOAD命令快速导入数据

在数据库管理中,数据的导入是一项重要的工作,有时候手动导入数据会非常麻烦,而MySQL提供了LOAD命令来快速导入数据,生成一条条SQL实现快速导入的目的。

LOAD命令的基本语法

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE ‘filename’

[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]

[(col_name_or_user_var,…)]

[SET col_name = expr,…]

其中,LOAD DATA是命令名称,LOW_PRIORITY表示限制LOAD的优先级,CONCURRENT表示追加数据时进行并发操作而不是一次性操作。LOCAL表示从客户端的文件系统中读取文件。REPLACE、IGNORE指定了具体的导入方式,REPLACE表示如果存在相同记录,则覆盖,否则插入,而IGNORE表示如果出现同名的记录,会忽略掉。INTO TABLE指定导入的目标表名。

在FIELDS和COLUMNS之后,分别是各个字段的分隔符和边界符。在LINES之后设置为行分隔符和行首字符。如果想跳过几行,可以使用IGNORE number LINES来忽略一定数量的行。

在设置了表和字段分隔符之后,可以通过(col_name_or_user_var,…)来指定应该将哪些列插入,可以使用SET col_name = expr语法来插入计算字段。

使用案例

假设我们有一个student表,有三个字段:id、name、age。并且我们有一个名为students.txt的文件,它包含了要插入到student表中的数据(tab分隔符):

1 Mary 20

2 John 21

3 Joe 19

我们可以使用以下命令来把students.txt数据导入到student表:

LOAD DATA LOCAL INFILE ‘students.txt’ INTO TABLE student

FIELDS TERMINATED BY ‘\t’ LINES TERMINATED BY ‘\n’

(id, name, age);

当然,如果students.txt的分隔符是逗号分隔符,那么应该使用FIELDS TERMINATED BY ‘,’。如果行分隔符是\r\n而不是\n,应该使用LINES TERMINATED BY ‘\r\n’。

使用LOAD命令时,需要将数据放在MySQL server machine的本地磁盘中。如果需要导入非常大的数据集,LOAD命令会变得非常慢,因为它会一行一行地插入,而使用LOAD LOCAL命令则可以直接跳过服务器磁盘上的所有数据,直接读取客户端本地磁盘上的数据,这样可以大大提高导入速度。

总结

LOAD命令是MySQL中一个非常有用的工具,可以快速地将数据导入到数据库中。它允许用户对具体的导入方式、目标表和字段进行指定,并且支持跳过行。在我们处理大量数据时,使用LOAD LOCAL可以大大缩短导入时间。


数据运维技术 » MySQL中使用LOAD命令快速导入数据(mysql 中load)