我想导入巨大的.csv文件到数据库中。它是Drupal数据库,我将产品导入节点,content_type_和uc_products表。但是这并不是因为我停止使用Drupal函数node_load和/或node_save来优化性能,而是直接通过SQL命令插入/更新记录。PHP .csv(44k记录)导入到MySQL数据库崩溃与代理错误
方案:从本地服务器(大约40MB)
- 阅读整个csv文件到 变量(以防止访问每每条记录的文件)
- 它解析到每行 阵列
解析每行到字段
检查数据库中的记录是否存在(1 SQL select,比较特定字段)
- 如果存在,更新(1个SQL更新)
如果不存在,将其插入(3个插入,1次更新)
6.1。如果记录有图像代码并且与数据库中的图像代码不同,请从外部服务器下载(卷曲)新图像文件并将其保存在本地服务器上。
1个额外的延迟插入到日志表
当我运行该脚本,我得到502代理错误(原因:错误从远程服务器上读取)约后。 10K导入的记录和页面停止加载。但是,导入仍在继续(新记录仍被添加到表中)。这会在20k-26k(尝试多次)记录后停止。
两个问题: 什么是代理错误,为什么我会得到一个? 如何优化我的脚本甚至更多?是否有其他常用的方法将大量数据导入到MySQL中?
非常感谢。
可能重复的[导入工具Excel CSV](http://stackoverflow.com/questions/2262343/import-tool-excel-csv) – Gordon 2012-01-11 14:10:26
对于SQL的东西,我不得不在2天前做类似的事情 - 来自CSV文件的超过600,000条记录。我所做的是编写一个脚本来将CSV转换为INSERT语句(在你的情况下,你可以使用条件插入或使用WHERE子句或EXISTS)。我结束了一个47m的SQL文本文件,然后使用'mysql -uuser -ppass dbname
2012-01-11 14:17:59