我正在尝试截断GBQ中的现有表,但是当我运行它时,以下命令失败。是否有任何特定的命令或语法来做到这一点。我查看了GBQ文档,但没有运气。
TRUNCATE TABLE [dw_test.test];
答案 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;