我正在尝试解决更新问题或将新产品从文件(csv)插入数据库。
问题是 CSV 文件中只有产品的编号和供应商。所以我需要为每个产品寻找这个供应商和编号的 ID。如果没有找到产品,我需要插入新的,否则我只会更新存储信息和价格。
该 csv 有 500 000 个产品 (34MB)。
现在我正在用这样的代码解决这个问题(但由于没有内存空间(使用 2GB),脚本在 50 000 个文件行后停止:
while (!feof($file_handle))
{
$data = fgetcsv($file_handle,5096,$i->column_separator);
if($row >= ($i->firstrow-1) && !empty($data[$i->column_product_code-1]) && !empty($data[$i->column_product_name-1]) && !empty($data[$i->column_price-1]) && $data[$i->column_price-1] > 0)
{
@$code = str_replace(array(' ','.','-','/'),'',$data[$i->column_product_code-1]);
@$supplier = iconv('WINDOWS-1250','UTF-8', $data[$i->column_producer_name-1]);
@$name = iconv('WINDOWS-1250','UTF-8', $data[$i->column_product_name-1]);
$article = $articleModel->searchImport($code,$supplier,isset($data[$i->column_producer_code-1]) ? $data[$i->column_producer_code-1]:NULL);
if($article !== FALSE)
{
$importqueueModel->update()
}
else
{
$importqueueModel->insert()
}
我无法弄清楚如何从文件中匹配产品代码和供应商以从数据库中获取 ID,以便我可以更新或将新产品插入数据库中。
请帮助,任何提示将不胜感激。
谢谢