ファイル (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を取得する方法がわかりません。これにより、新しい製品をデータベースに更新または挿入できます。
助けてください、どんなヒントでも大歓迎です。
ありがとうございました