2

首先,如果这个问题已经得到解答,我深表歉意。我见过很多类似的问题,但没有一个能完整回答我的问题。

首先,我充其量只是一个 SQL 新手。自从建立我的在线商店以来,我已经学到了很多东西,但我对其中的大部分内容仍然知之甚少。

好的,我的网络服务器上有一个用于在线商店的数据库。我卖的东西也可以直接发货。我可以每隔几分钟从我的分销商处下载更新的 CSV 格式的库存文件。此文件包含两列,第一行中没有字段名称。我要更新的表是 zen_products。CSV 文件中的第一列对应于列 products_model 并且是唯一的。CSV 文件中的第二列对应于列 products_quantity。CSV 文件中会有 SQL 表中不存在的记录。我不想创建新记录;我只想使用 CSV 文件中的值更新 products_quantity 列。

好的,就目前而言,我可以通过我的购物车软件的管理部分使用附加组件来执行此操作,但我必须编辑 CSV 文件以输入特定的字段名称。这不是问题,因为它非常简单,但编辑文件、登录、上传和处理文件确实需要几分钟。其实很简单;但是我想找到一种方法来完全自动化这个过程,这样如果可能的话,我可以每 15-30 分钟自己完成一次。正如你所想象的那样,需要 5 分钟的事情是可以的,但如果每 15 分钟需要 5 分钟,那么一整天的时间就很多了。即使在我很忙或不在的时候,如果能够让它发生,那就太好了。

如有必要,我也愿意为一个有效的、完全自动化的解决方案支付合理的费用。此外,CSV 文件只能通过 FTP 访问。仅供参考,我使用 Zen Cart 作为我的购物车。

任何帮助将不胜感激。谢谢。

更新:根据 JKirchartz 的帮助(谢谢,顺便说一句,你很高兴),我有这个每次运行时似乎都可以工作:

DELETE FROM zen_temp;

load data local infile '/home/somedude/public_html/somefolder/somefile.csv' into table zen_temp
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
(products_model, products_quantity);

UPDATE zen_products SET `products_quantity` = ( SELECT products_quantity FROM zen_temp WHERE zen_products.products_model = zen_temp.products_model )
WHERE EXISTS ( SELECT products_model FROM zen_temp WHERE zen_products.products_model = zen_temp.products_model );

现在我的问题是,我怎样才能把它变成我可以用很少的输入轻松完成的事情?有没有办法可以轻松地安排它或从任何地方运行它?再次感谢。

4

1 回答 1

1

您可以使用以下命令直接导入 CSV:

load data local infile 'uniq.csv' into table tblUniq fields terminated by ','
enclosed by '"'
lines terminated by '\n'
(uniqName, uniqCity, uniqComments) 

要更新,您必须LOAD DATA LOCAL INFILE进入另一个表,然后使用存储过程或查询INSERTUPDATE(而不是REPLACE)您想要的表

于 2012-09-17T16:31:17.670 回答