![在 Libreoffice 中同步工作表](https://linux22.com/image/1545462/%E5%9C%A8%20Libreoffice%20%E4%B8%AD%E5%90%8C%E6%AD%A5%E5%B7%A5%E4%BD%9C%E8%A1%A8.png)
希望有人可以帮忙。
我在 Woocommerce 上有一个电子商务代销网站,我使用 WPAllImport 通过 CSV 进行更新。我目前从供应商处下载了一个 CSV 电子表格,其中包含当前产品价格和库存数量。目前,我需要浏览此电子表格以查找我正在销售的产品,并将数据从供应商电子表格传输到我自己的电子表格中,这非常耗时。我必须这样做,因为我的供应商使用的产品 ID 与 Woocommerce 为我的产品提供的产品 ID 不同,并且无法直接上传其 CSV。
当我从供应商处下载 CSV 文件时,我总是将其保存为 supplierstock.csv,以便每个新更新都会覆盖/取代任何以前的版本。
有没有什么办法可以将我的电子表格/数据库链接到 supplierstock.csv,以便当新数据到达时,我的电子表格/数据库会自动更新并填充最新值?
但主要问题是供应商电子表格的外观发生了变化。布局相同,但产品在电子表格中的位置发生了变化。
我可以将我的产品 ID 链接到他们的产品 ID,然后链接相应的
库存从他们的工作表复制到我的工作表,这样当我下载新工作表时。我的数据库/电子表格识别供应商工作表中的产品 ID,识别库存数量单元格并相应地更新我的电子表格?
示例数据:
我的表格
ID Parent ID Title Stock Price 00001 0 Product 1
00002 00001 Product 1 - Variant 1 10 £1.99 00003 0 Product 2
00004 00003 Product 2 - Variant 1 10 £1.99 00005 00003 Product 2 - Variant 2 10 £1.99
供应商表格
ID Title Stock Price PROD1 Product 1 - Variant 1 20 £2.99
PROD2 Product 2 - Variant 1 20 £2.99 PROD3 Product 2 - Variant 2 20 £2.99
因此理想情况下我希望链接:
00002 -> PROD1 00004 -> PROD2 00005 -> PROD3
并将与供应商 ID 关联的价格和库存单元格链接到我自己的与我的链接 ID 关联的单元格,
这样当 PROD1、2 或 3 的库存或价格发生变化时,我的工作表上库存或价格的相应单元格也会发生变化,因此我的工作表上的库存应该更新为 20,价格更新为 2.99 英镑。
我读过关于在数据库中链接表格的文章,但不确定具体该如何做,或者它是否能达到我想要的效果
当我下载供应商表时,单元格标题保持不变,但产品可能出现在不同的行上,因此通过单元格进行链接不起作用。显然,链接 ID 应该会使事情更准确?
答案1
如果您使用 WP All Import,则不需要 Libreoffice 方法。该插件允许您直接映射字段以及设置自动更新触发器。
您需要做的就是创建一个具有正确列映射的导入模板,然后在供应商的 csv 文件上设置触发器,无论您将其上传到何处。
通过使用属性将供应商的 ID 添加为您的变体 SKU 或备用 SKU,您可能会获得很大的帮助。这将为您提供表格之间变体的 1:1 映射,而这正是您要更新的全部内容。这样,您就可以拥有不同的产品标题,因为如果供应商更改它,这通常是一个不好的字段。
如果您没有使用允许自动触发的插件的高级版本,您仍然可以执行此操作而不需要 LO 作为中介。(请注意,您并不“需要”触发器,只是如果您不想在每次 csv 更改时都必须使用映射模板逐步完成导入过程)
使用 phpMyAdmin 将 supplierstock.csv 作为其自己的表上传到您的 WP 数据库中。(当然要小心)
使用 wp_postmeta 表(包含变体的库存和价格信息)与新的 supplierstock 表之间的 JOIN 设置 UPDATE 查询。请参阅此主题以获取简单概述:https://dba.stackexchange.com/questions/21152/how-to-update-one-table-based-on-another-tables-values-on-the-fly
如果您想要自动执行此操作,您可以设置一个或多个触发器,以便在每次将 supplierstock.csv 重新导入该表时触发。(请确保作为更新导入,而不是单独的新表)您至少需要一个 UPDATE 触发器来设置库存和价格(以及任何其他可更改的字段),但您可能还需要一个 INSERT 触发器来在供应商添加新产品时自动添加新产品,并可能需要一个 DELETE 触发器来删除已停产的商品,或用作添加“已停产”标签/属性的方式,该标签/属性也将库存清零/标记产品缺货,但不会将其从数据库中删除。
您还可以完成最后一部分,可能使用 PHP 以更安全的方式完成。(首先处理为新添加的内容创建父产品)
如果您使用的是内置的 Woocommerce 导入器,无论是否使用触发器,我仍会选择 phpMyAdmin 路线。首先尝试使用 LO 来处理特殊的导入 csv 只是额外的工作。当然,您不能在两个不同的 csv 文件或电子表格文件上使用 Base,因为您无法在 LO 中对该类型的数据源在多个表上运行查询。您将被困在 VLOOKUP 之类的东西和/或带有嵌套 IF 的一些复杂 MATCH 语句中。此外,VLOOKUP 需要相邻的列。如果供应商决定在您需要的两列之间添加一列,一切都会中断。在这种情况下,SQL 方法不会中断。
本质上,任何一种导入工具都在执行某种 UPDATE JOIN 函数,那么为什么要先在 LO 中执行该操作,然后再使用 Wordpress 重新执行一遍呢?我只需直接使用 supplier.csv 和我的 wp_postmeta 表执行一次 UPDATE JOIN 即可。