【问题标题】:Big Query Restoring tableBigquery 恢复表
【发布时间】:2018-12-16 11:54:36
【问题描述】:

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

我试过了:

bq cp table1.events_20180629@1530460302987 table1.temp_table

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

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

【问题讨论】:

标签: database google-bigquery schema database-migration


【解决方案1】:

我很害怕,但我认为您丢失了数据。如果没有创建具有相同 id 的新表,则恢复将在表删除后 2 天内进行。在您的情况下,您创建了具有相同 ID 的表。

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

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

而且最好在 bq cp 命令中使用全部详细信息,例如位置、项目 if 等。 恢复命令工作得很好,但有两个主要限制,1)使用相同 id 创建的表和 2)数据集被删除

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

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多