大查询还原表

时间:2018-07-08 17:56:08

标签: database google-bigquery schema database-migration

由于最近的Big Query迁移,我有两个数据集。旧的数据集有一个表20180629,新的数据集也有一个表为20180629的表。我删除了新表以迁移数据,并认为当天的所有信息都存储在旧表中。但是,当我将旧版本迁移到新版本时,我发现旧表中只存储了部分数据。因此,新的20180629具有当天的全部数据的一部分。

我尝试过:

bq cp table1.events_20180629@1530460302987 table1.temp_table

这要么使我得到时间戳不正确的错误(顺便说一下,时间戳长度应该是多少)。或者,当我开始使用它时,它会复制一个空表。

我想在新数据集中恢复原始的20180629。但是,我删除了一个20180629,然后创建了部分20180629,然后删除了这个。我担心这些数据会完全丢失。有人可以告诉我带有适当时间戳记的bq cp命令,以追溯到我的大查询数据集中的一天吗?我对这个问题的研究告诉我,我只有两天的时间来做,所以任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

我很害怕,但我认为您丢失了数据。如果没有创建具有相同ID的新表,则还原将在删除表的两天内进行。对于您而言,您已经创建了具有相同ID的表。

但是,如果要获取时间戳信息,则可以在旧版SQL中的查询下面运行。此查询将返回您12个小时前的时间戳。您可以根据需要更改小时数。

SELECT INTEGER(DATE_ADD(USEC_TO_TIMESTAMP(NOW()),-12,'HOUR')/ 1000)

另外,最好在bq cp命令中使用整个详细信息,例如位置,项目if和其他。 恢复命令绝对可以正常工作,但有2个主要限制,1)创建具有相同ID的表和2)删除数据集

bq --location = [LOCATION] cp myprojectid.mydataset.mytable@1418864998000 myprojectid.mydataset.newtable

希望获得帮助。