使用PHP从只读Google表格中获取数据

时间:2018-03-14 09:36:06

标签: php mysql arrays json

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

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

目前我正在将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。

稍后,我想回来,再次获取远程数据,并将其与数据库中已有的数据进行比较,并删除数据集中不再存在的数据,并添加已添加的任何新数据。而这正是我努力奋斗的部分。我可以查询数据库并构建相同的数组格式进行比较,但由于它是一个多维数组,我不能使用array_diff()。

那么我应该如何最好地接近这个?我不认为循环遍历数据集并检查每一行是最有效的方法,但我认为这是一个选项。

1 个答案:

答案 0 :(得分:0)

如果:不要这样做!是不可接受的答案......

您的代码必须可配置,灵活且干净,以便轻松维护。如果你可以避免这两个数据集之间的笛卡尔连接,那么可能有一些数据子集可以用作密钥或复合密钥?

您可以将spreedsheet中的所有数据放入PHP中的哈希映射中,然后“加入”非常快。

如果没有,每行的手动比较可能是最好的选择。

最后的建议。确保对DB的调用进行批处理。查询太长会导致数据库解析器失效。 (例如,如果你删除....在哪里...... id IN(10 000 ids))