我有(.csv)文件有两列
例如:
老sku新sku
123 456
我想用新的sku编号替换每个产品的sku编号.
我的商店里有超过5000种商品.
提前致谢
Magento不容易批量更换SKU.尝试通过导入/导出或数据流配置文件来执行此操作,您会遇到各种问题.但是,有一种相当简单的方法,它只需要在您的服务器上添加一个php脚本,并在SKU之前和之后添加一个CSV文件.这是一步一步的;
注意:在使用所有SKU之前,请务必仅使用一个或两个产品SKU进行测试.此外,请确保在尝试此操作之前备份数据库.
不要在CSV文件中包含标题.
确保此文件以UTF-8或ANSI编码保存为CSV文件.如果使用Excel创建文件,则可能会遇到此问题.
将CSV文件放在服务器上将CSV文件上载到Magento服务器上的var/export目录,使其路径为/var/export/sku2sku.csv.
创建PHP脚本在服务器上,在Magento安装目录(您看到app,var,skin,media,js和其他目录的目录)中,创建一个新文件,保存并命名为"updateskus.php" .
将以下php代码粘贴到updateskus.php并保存文件.
<?php
include_once './app/Mage.php';
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
$updates_file="./var/export/sku2sku.csv";
$sku_entry=array();
$updates_handle=fopen($updates_file, 'r');
if($updates_handle) {
while($sku_entry=fgetcsv($updates_handle, 1000, ",")) {
$old_sku=$sku_entry[0];
$new_sku=$sku_entry[1];
echo "<br>Updating ".$old_sku." to ".$new_sku." - ";
try {
$get_item = Mage::getModel('catalog/product')->loadByAttribute('sku', $old_sku);
if ($get_item) {
$get_item->setSku($new_sku)->save();
echo "successful";
} else {
echo "item not found";
}
} catch (Exception $e) {
echo "Cannot retrieve products from Magento: ".$e->getMessage()."<br>";
return;
}
}
}
fclose($updates_handle);
?>
Run Code Online (Sandbox Code Playgroud)
页面打开后,您应该会看到SKU已更新的确认消息.您的SKU现在应该已成功更新.
如果您已完成更新SKU,请删除添加到服务器的CSV和PHP文件.
无法从Magento检索产品:SQLSTATE [40001]:序列化失败:1213尝试获取锁定时发现死锁; 尝试重新启动事务
如果您要更新许多SKU,您可以预期脚本至少需要几分钟才能完成.