我需要大量更新一个CSV文件的特殊价格(这告诉我特别的价格,特别的价格,到/从日期)。
目前,我在foreach循环中使用magento模型方法(在解析CSV行之后)执行此操作:
$p = Mage::getModel('catalog/product');
$product_id = $p->getIdBySku($product['SKU']);
if (!$product_id) {
throw new Exception('Product Does Not Exists');
}
$p->setStoreId($store_id)->load($product_id);
$p->setSpecialPrice(floatval($product['Price']));
$p->setSpecialFromDate($product['FromDate']);
$p->setSpecialFromDateIsFormated(true);
$p->setSpecialToDate($product['ToDate']);
$p->setSpecialToDateIsFormated(true);
$p->save();
$p = null;当少数产品需要更新时,这是可以的。然而,当您更新100+产品时,这会变得非常慢,而且还会影响站点的性能。
我是否可以大量导入特殊价格,并通过直接SQL查询设置日期?
在研究这个问题时,我找到了一个可能的解决方案(基于本文http://fishpig.co.uk/magento/tutorials/update-prices-sql),在数据库中直接设置special_price,如下所示:
注意:bd_是我的表前缀
UPDATE bd_catalog_product_entity AS CPE
INNER JOIN bd_catalog_product_entity_decimal AS CPED ON CPED.entity_id = CPE.entity_id
SET CPED.`value` = 2.99 -- New Special Price
WHERE
CPED.attribute_id = (
SELECT
attribute_id
FROM
bd_eav_attribute eav
WHERE
eav.entity_type_id = 4
AND eav.attribute_code = 'special_price'
)
AND CPED.store_id = 1 -- Retail Store
AND CPE.sku = 'ABS049' -- Sku Being Updated这个看起来正在工作(我可以在magento中看到更新的值)。我还不确定这是否是直接在数据库中设置特殊价格的正确方式。
另外,我还没有想出如何设置from/to日期。
在这方面的任何帮助将是非常感谢的。
发布于 2014-11-28 12:25:43
我建议您使用Dataflow配置文件。(我想你已经知道它的用法了,我正在写下这个过程,以防对不知道Dataflow Profiles用法的人有帮助)
这是一个非常可靠的方法。希望能帮上忙!
https://stackoverflow.com/questions/27186850
复制相似问题