如何在MySQL中插入大量行?

时间:2009-05-21 08:45:42

标签: mysql insert

如何使用单个查询将例如100 000行插入MySQL表中?

4 个答案:

答案 0 :(得分:8)

insert into $table values (1, a, b), (2, c, d), (3, e, f);

这将执行3行的插入。根据需要继续达到100,000。在做ETL工作的时候我会用~1,000块。

如果你的数据静态存在于文件中,转换它并使用加载数据infile 将是最好的方法,但我猜你是因为你做了类似的事情而要求这个。

另请注意其他人对max_allowed_pa​​cket大小的说法限制了查询的长度。

答案 1 :(得分:3)

您可以使用INSERT语句执行批量插入,但您的查询不能大于(略小于)max_allowed_pa​​cket。

对于100k行,根据行的大小,您可能会超过此值。

一种方法是将其分成几个块。无论如何,这可能是一个好主意。

或者,您可以使用LOAD DATA INFILE(或LOAD DATA LOCAL INFILE)从制表符分隔(或其他分隔)文件加载。有关详细信息,请参阅文档。

LOAD DATA不受max_allowed_pa​​cket限制。

答案 2 :(得分:0)

尝试使用LoadFile() 或者将yor Data转换为XML文件,然后使用Load和Extract()函数将数据加载到MySQL数据库中。

这是One Query和Fastest选项,

即使我也这样做,我有大约数百万行的1.5 GB文件。在我的案例中,我使用了两种选项。

答案 3 :(得分:-1)

据我所知,你不能。你需要一个循环。