截断GBQ中的表

时间:2015-05-13 17:33:16

标签: google-bigquery

我正在尝试截断GBQ中的现有表,但是当我运行它时,以下命令失败。是否有任何特定的命令或语法来做到这一点。我查看了GBQ文档,但没有运气。

TRUNCATE TABLE [dw_test.test];

4 个答案:

答案 0 :(得分:15)

虽然BigQuery不支持SELECT以外的任何其他内容,但只要您取消选中"使用旧版SQL"在查询选项中。没有截断,但是you can delete

DELETE from my_table WHERE 1=1

请注意,BigQuery需要在WHERE中使用DELETE,因此如果您想要删除所有内容,则需要使用始终为真的语句。

答案 1 :(得分:14)

好消息,目前支持TRUNCATE TABLE:https://cloud.google.com/bigquery/docs/reference/standard-sql/dml-syntax#truncate_table_statement

TRUNCATE TABLE [[project_name.]dataset_name.]table_name

但是,请注意,如果您的表定义中需要分区过滤器,则此功能将不起作用/不被支持。

答案 2 :(得分:6)

BigQuery不支持TRUNCATE作为查询字符串的一部分。 BQ支持的唯一DDL / DML动词是SELECT

一个选项是使用WRITE_TRUNCATE write disposition运行作业(链接用于查询作业参数,但在具有目标表的所有作业类型上都支持)。这将截断表中已有的所有数据,并将其替换为作业结果。

如果您不想将内容替换为其他数据或启动作业,最好的选择可能是删除并重新创建具有相同架构的表。

答案 3 :(得分:0)

CREATE OR REPLACE TABLE <dataset>.<table>
AS SELECT * FROM <dataset>.<table> LIMIT 0;