当你需要在 MySQL 数据库中批量插入数百万条数据时,你就会意识到,逐条发送 INSERT 语句并不是一个可行的方法。
MySQL 文档中有些值得一读的 INSERT 优化技巧。
在这篇文章里,我将概述高效加载数据到 MySQL 数据库的两大技术。
LOAD DATA INFILE
如果你正在寻找提高原始性能的方案,这无疑是你的首选方案。LOAD DATA INFILE 是一个专门为 MySQL 高度优化的语句,它直接将数据从 CSV / TSV 文件插入到表中。
有两种方法可以使用 LOAD DATA INFILE。你可以把数据文件拷贝到服务端数据目录(通常 /var/lib/mysql-files/),并且运行:
LOAD DATA INFILE '/path/to/products.csv' INTO TABLE products;
这个方法相当麻烦,因为你需要访问服务器的文件系统,为数据文件设置合适的权限等。
好消息是,你也能将数据文件存储在客户端,并且使用 LOCAL 关键词:
LOAD DATA LOCAL INFILE '/path/to/products.csv' INTO TABLE products;
在这种情况下,从客户端文件系统中读取文件,将其透明地拷贝到服务端临时目录,然后从该目录导入。总而言之,这几乎与直接从服务器文件系统加载文件一样快,不过,你需要确保服务器启用了此 选项。
LOAD DATA INFILE 有很多可选项,主要与数据文件的结构有关(字段分隔符、附件等)。请