首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用PHP从只读的Google工作表中获取数据

使用PHP从只读的Google工作表中获取数据
EN

Stack Overflow用户
提问于 2018-03-14 17:36:06
回答 1查看 97关注 0票数 0

我正在将Google Sheets数据镜像到本地MySQL数据库中。我正在提取JSON格式的工作表数据,解析以提取我需要的信息,并将其插入到DB中。

我无法控制添加到工作表中的数据,可能会在现有数据之间添加或删除行,或者在末尾添加行。因此,我这里的问题是:如何将表上的内容与数据库中已有的内容进行比较,这样就不会出现重复或丢失的数据。

目前,我正在将JSON数据解析成一个包含我需要的片段的数组:

array(2) {
  [1]=>
  array(2) {
    ["date"]=>
    string(9) "2016-10-8"
    ["location"]=>
    string(15) "Berlin, Germany"
  }
  [2]=>
  array(2) {
    ["date"]=>
    string(10) "2016-10-22"
    ["location"]=>
    string(13) "Nashville, TN"
  }
}

然后将其注入到MySQL DB中。

稍后,我想回来,再次获取远程数据,并将其与数据库中已有的数据进行比较,删除数据集中不再存在的数据,然后添加任何已添加的新数据。这是我一直在努力解决的问题。我可以查询DB并构建相同的数组格式进行比较,但是因为它是多维数组,所以不能使用array_diff()。

那么,我应该如何最好地处理这个问题呢?我不认为遍历数据集并检查每一行是最有效的方法,但我认为这是一种选择。

EN

回答 1

Stack Overflow用户

发布于 2018-03-15 21:57:13

如果:不要这样做!不是一个可以接受的答案。

您的代码必须是可配置的、灵活的和整洁的,以便易于维护。如果您可以避免这两个数据集之间的笛卡尔连接,那么也许有一些数据子集可以用作键或组合键?

您可以将spreedsheet中的所有数据放入PHP中的hashmap中,然后"join“就会非常快。

如果不是,那么手动比较每一行可能是下一个最好的方法。

最后的建议。确保对DB的调用是批处理的。查询时间过长会导致DB解析器崩溃。(例如,如果您删除....其中....id IN (10000个ids))

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49274129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档