mysql load data 换行,MySQL快速插入大量数据——使用LOAD DATA语句

很久很久以前,为了写某个程序,必须在MySQL数据库中插入大量的数据,一共有85766121条。近一亿条的数据,怎么才能快速插入到MySQL里呢?

当时的做法是用INSERT INTO一条一条地插入,Navicat估算需要十几个小时的时间才能完成,就放弃了。最近几天学习了一下MySQL,提高数据插入效率的基本原则如下:

批量插入数据的效率比单数据行插入的效率高

插入无索引的数据表比插入有索引的数据表快一些

较短的SQL语句的数据插入比较长的语句快

这些因素有些看上去是微不足道的,但是如果插入大量的数据,即使很小的影响效率的因素也会形成不同的结果。根据上面讨论的规则,我们可以就如何快速地加载数据得出几个实用的结论。

使用LOAD DATA语句要比INSERT语句效率高,因为它批量插入数据行。服务器只需要对一个语句(而不是多个语句)进行语法分析和解释。索引只有在所有数据行处理完之后才需要刷新,而不是每处理一行都刷新。

如果你只能使用INSERT语句,那就要使用将多个数据行在一个语句中给出的格式:

INSERT INTO table_name VALUES(...),(...),...

这将会减少你需要的语句总数,最大程度地减少了索引刷新的次数。

根据上面的结论,今天又对相同的数据和数据表进行了测试,发现用LOAD DATA速度快了不只是一点点,竟然只用了十多分钟!所以在MySQL需要快速插入大量数据时,LOAD DATA是你不二的选择。

顺便说一下,在默认情况下,LOAD DATA语句将假设各数据列的值以制表符(\t)分阁,各数据行以换行符(\n)分隔,数据值的排列顺序与各数据列在数据表里的先后顺序一致。但你完全可以用它来读取其他格式的数据文件或者按其他顺序来读取各数据列的值,有关细节请参照MySQL文档。

随机文章:

这篇文章发布于 2012年05月14日,星期一,14:23,归类于 程序设计。您可以跟踪这篇文章的评论通过 RSS 2.0 feed。

您可以留下评论,或者从您的站点trackback。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值