2011-09-01 28 views
0

我刚刚问了超级用户关于Microsoft Excel的question。谢天谢地有人回答 - 但后来我意识到,如果我更改SKU列并重新导入产品CSV文件,它将不会更新产品。它会将它们视为新产品,因为SKU代码不匹配。更改SQL数据库中的Magento产品代码?

的问题是:

我想编辑产品代码在Excel中,使每一个产品代码正好是长度为8位。

目前的产品代码具有不同的长度,例如:

12 
1222 
213212 
32 
3231 
3213131 

上述代码应如下所示:

00000012 
00001222 
00213212 
00000032 
00003231 
03213131 

正如你可以看到现在所有乘积码的长度为8位,任何小于8的产品代码都有正确数量的0。

在Excel中这非常容易 - 但它可以直接在数据库表上执行吗?

回答

1

如果您使用的MS SQL Server:

UPDATE 
    Products 
SET 
    product_code = RIGHT(CONCAT('00000000', product_code), 8) 

您只需填写在开始一堆0的,然后乘坐8路最右边的字符。

+0

它的MySQL是否有差别? – dannymcc

+0

MySQL也有'RIGHT'函数,但是使用'CONCAT'(或可能取决于版本?)来连接字符串。我会编辑我的答案。 –

+0

的SKU码是在一个名为“catalog_product_entity”表,当我在phpMyAdmin查看表,单击SQL,我得到了下面一行: SELECT * FROM'catalog_product_entity' WHERE 1 我应该那么你的代码添加至底部那个? – dannymcc

0

创建以下PHP文件,这应该工作。我没有机会测试它,但是我一直为magento运行mysql更新脚本。

<?php 

    // initialize Magento environment 
    include_once "app/Mage.php"; 

    Mage::app()->setCurrentStore(0);   
    $connection = Mage::getSingleton('core/resource')->getConnection('core_write');  
    $sql1 = 'update `catalog_product_entity` set sku = RIGHT(CONCAT('00000000', sku), 8)';  

    $connection->query($sql1);  

?> 
+0

我已经将上述内容添加到名为changeSKU.php的文件中,当我访问URL时,它会加载一个空白屏幕并且不起作用。我错过了一步吗? – dannymcc

+0

sql语法错误。尝试编辑版本 –

+0

仍然没有快乐。我的服务器配置可以阻止它以某种方式吗? – dannymcc

0

以供将来参考,我跑得到这个工作的SQL命令是:

UPDATE `catalog_product_entity` SET `sku` = RIGHT(CONCAT('00000000', sku), 8) 
相关问题