![6b4ce43b0acab781eb36a27c304358a5.png](https://i-blog.csdnimg.cn/blog_migrate/31af6cae19fafa1dbc1c5020b783540b.jpeg)
当你需要在 MySQL 数据库中批量插入数百万条数据时,你就会意识到,逐条发送 INSERT
语句并不是一个可行的方法。
MySQL 文档中有些值得一读的 INSERT 优化技巧[2]。
在这篇文章里,我将概述高效加载数据到 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;
在这种情况下,从客户端文件系统中读取文件,将其透明地拷贝到服务端临时目录,然后从该目录导入。总而言之,这几乎与直接从服务器文件系统加载文件一样快,不过,你需要确保服