【发布时间】:2019-12-20 00:21:15
【问题描述】:
我有一个每天在 bigquery 中获取表数据的过程。我需要一些旧表数据,但不幸的是它们现在已经过期,而且它们的过期时间超过两天。我知道如果表数据被删除并且删除时间少于两天,我们可以取回表数据,但是如果表过期并且时间超过2天,是否有可能?
我尝试使用 2 天前的时间戳并尝试使用 bq 工具获取它,但我需要 2 天前删除的数据。
【问题讨论】:
标签: google-cloud-platform google-bigquery
我有一个每天在 bigquery 中获取表数据的过程。我需要一些旧表数据,但不幸的是它们现在已经过期,而且它们的过期时间超过两天。我知道如果表数据被删除并且删除时间少于两天,我们可以取回表数据,但是如果表过期并且时间超过2天,是否有可能?
我尝试使用 2 天前的时间戳并尝试使用 bq 工具获取它,但我需要 2 天前删除的数据。
【问题讨论】:
标签: google-cloud-platform google-bigquery
Bigquery 表不一定会在 2 天内过期。您可以将它们设置为您喜欢的任何内容: https://cloud.google.com/bigquery/docs/managing-tables#updating_a_tables_expiration_time
一旦它们过期,就无法检索表,除非您有快照。在这种情况下,您可以恢复快照并使用它来获取所需的数据。请参阅有关如何执行此操作的 SO 问题: How can I undelete a BigQuery table?
【讨论】:
GCP 支持在这里!
实际上,如果您阅读@niczky12 链接的SO question 并如documentation 中所述:
可以在删除后 2 天内恢复表。通过利用快照装饰器功能,您可以在删除事件之前引用表,然后复制它。请注意以下几点:
如果您已经在同一数据集中创建了同名的新表,则无法引用已删除的表。
如果您删除了包含该表的数据集,并且您已经创建了一个同名的新数据集,则您无法引用已删除的表。
此时,很遗憾无法恢复已删除的数据。
【讨论】:
在此处添加以供将来的搜索者使用。我能够按照下面的说明在介质上恢复 7 天前仍然存在的数据。
实际上,当我尝试一个未来太远的日期时,UI 中的 Cloud Shell 会返回最大返回时间。他们回馈的最长时间是 7 天(以 EPOCH 毫秒计)。只需在下面的转换器中输入并添加 1 或 2 小时,你应该会很好。不要获取控制台提供的确切副本,因为它在打印时已经过时。
并确保将未来的表设置为永不删除! (或您知道的日期)。这可以在表详细信息中找到,也可以在用于 bigquery 的 console.cloud 环境中的数据集级别上找到。
【讨论】: