首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除BigQuery云控制台中的表

删除BigQuery云控制台中的表
EN

Stack Overflow用户
提问于 2021-11-19 09:56:32
回答 1查看 299关注 0票数 0

我试图从Bigquery表中删除数据,并面临挑战。目前,每次只有一个日期分区表被删除/删除。基于对google的一些研究和文档,我知道我需要使用DML操作。

下面是我用来删除的命令,但它不起作用

1.从bigquery-project.dataset1.table1_*删除

2.液滴表bigquery-project.dataset1.table1_*

3.从bigquery-project.dataset1.table1_*中删除where _table_PO后缀=‘20211117’;

第三个查询对我有效,它只删除该特定日期。

对于1和2查询,我有一个例外,它说是“元表上的非法操作(写)”

如何一次删除300多个日期分区表?

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-11-19 11:52:25

您可以选择创建存储过程的路线,以便在此场景中生成语句。

代码语言:javascript
运行
复制
CREATE OR REPLACE PROCEDURE so_test.so_delete_table()
BEGIN
    DECLARE fqtn STRING;
    FOR record IN
    (
        select concat(table_catalog,".",table_schema,".",table_name) as tn
        from so_test.INFORMATION_SCHEMA.TABLES
        where table_name like 'test_delete_%'
        )
    DO
        SET fqtn=record.tn;
        -- EXECUTE IMMEDIATE format('TRUNCATE TABLE %s',fqtn);
        EXECUTE IMMEDIATE format('DROP TABLE %s',fqtn);
    END FOR;
END

call so_test.so_delete_table();

在上面的查询中,我将查询要从其中删除记录的表,然后将其传递给适当的语句。在您的场景中,我无法判断您是否想要删除记录或整个表,因此根据场景的不同,我为这两种情况都包含了逻辑。

这也可以修改为接受一个表前缀,并将它简单地传递给for循环where子句。

或者,您只需在for循环中执行select语句,将结果复制到工作表中,并构造适当的DML语句,将其复制回控制台并执行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70032938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档