0

我必须将大约 1600 万条记录上传到不允许 LOAD DATA 功能的共享网络空间上的 MySQL 5.1 服务器。该表是一个 Innodb 表。我还没有分配任何键。

因此,我使用 Python 脚本将我的 CSV 文件(大小为 2.5 GB)转换为带有单独 INSERT 语句的 SQL 文件。我已经启动了SQL文件,这个过程非常慢,感觉每分钟处理1000-1500行!

与此同时,我阅读了有关批量插入的信息,但没有找到任何可靠的来源来说明一个插入语句可以有多少条记录。你知道吗?

没有密钥并稍后添加它们是否有优势?

围绕所有插入的事务是否有助于加快进程?事实上,此时只有一个连接(我的)与数据库一起工作。

4

1 回答 1

1

如果您使用insert ... values ...语法插入运行单个请求的多行,则查询大小受max_allowed_pa​​cket值而不是行数的限制。

关于键:在任何数据操作之前定义键是一个好习惯。实际上,当您构建模型时,您必须考虑键、关系、索引等。

最好在插入数据之前定义索引。CREATE INDEX在庞大的数据集上工作相当缓慢。但是推迟索引创建并不是一个巨大的缺点。

为了使您的插入更快,请尝试打开自动提交模式并且不要在您的表上运行并发请求。

于 2012-09-29T21:43:39.630 回答