Load Data Infile是否首先将所有数据加载到内存中?

时间:2016-03-31 05:02:46

标签: mysql

我有一个包含1000万行的数据文件,包含2个字段,id和name。文件的总大小为650 MB。

将此数据加载到数据库表需要多长时间?它是多对多关系的交叉表。

这似乎需要很长时间才能做到这一点。在加载时,我尝试执行select语句。但是,它是空的。

MariaDB [wordDS]> select count(*) from Category_Term;
+----------+
| count(*) |
+----------+
|        0 |
+----------+
1 row in set (12.02 sec)

Load Data Infile已经运行了很长一段时间,为什么没有任何数据加载到表中呢?我怀疑所有数据行都将首先读入内存,然后在加载结束时最终写入表中。否则,我可以使用' select *'用于检查装载状态的声明。

1 个答案:

答案 0 :(得分:0)

在支持它的表上,比如InnoDB,它通常在事务的上下文中加载,所以在完成之前你不会看到任何东西。然后突然可以获得所有数据。

如果您需要逐个加载它,您可能需要将一个电子表格转换为多个部分并按顺序加载它们。

我喜欢将大文件分成更小的部分,以便您获得进步感。看到“文件23/100完成”比“文件0/1完成”要好得多。