如何将非分区表转换为分区表

Posted

技术标签:

【中文标题】如何将非分区表转换为分区表【英文标题】:how to convert a non-partitioned table into a partitioned one 【发布时间】:2018-05-17 06:29:06 【问题描述】:

如何使用 StandardSQL 或 LegacySQL 在大查询中重命名 TABLE。 我正在尝试使用 StandardSQL,但它给出了以下错误,

重命名表 dataset.old_table_namedataset.new_table_name;

不支持声明:RenameStatement at [1:1]

这是否意味着没有任何方法(SQL QUERY)可以重命名表?

【问题讨论】:

how to rename a table without re creating it的可能重复 @Pentium10 我看到了这个问题,我是一年前。所以我想如果现在有任何方法可以重命名它。因为我的旧表不包含分区,而新表将包含分区。所以我只想从非分区表更改为分区表。如果有任何方法可以在不处理整个表格的情况下做到这一点。 你需要编写脚本 而不是重命名,似乎问题是“”? 【参考方案1】:

我只是想从非分区表更改为分区表

您可以通过两个步骤来实现这一点

第 1 步 - 将表导出到 Google Cloud Storage

第 2 步 - 将文件从 GCS 加载回 GBQ 到带有分区列的新表中

两者都是免费的 不过,请记住分区表的一些限制 - 例如分区数 - 截至今天,每个表是 4000 - https://cloud.google.com/bigquery/quotas#partitioned_tables

【讨论】:

【参考方案2】:

目前无法按照this document 中的说明在 Bigquery 中重命名表。您必须按照 Mikhail 给出的步骤创建另一个表。请注意,表存储仍有一些费用,但很少。详情请见this doc。

【讨论】:

以上是关于如何将非分区表转换为分区表的主要内容,如果未能解决你的问题,请参考以下文章

转换为分区表时的初始扩展区大小

如何轻松将旧式分区表转换为新式分区表

Oracle 将普通表转换为分区表

SQL Server 2005中的分区表:将普通表转换成分区表

使用导出导入(datapump)方式将普通表切换为分区表

使用DBMS_REDEFINITION在线切换普通表到分区表