SQL能否删除BigQuery中的一行并将删除的行移动到另一个表中?

2024-05-03 11:33:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经查看了有关可用语句的文档,但没有看到任何语句可以使我将删除的行移动到另一个表中

下面是一段sql代码:

CREATE TABLE %s;
 INSERT INTO rm.table_access (%s) VALUES (%s);
 DELETE FROM rm.table_access
    Where (%s) LIKE 'HEARTBEAT' AND  -7 AND -077 AND -77 
    OUTPUT Deleted.(%s) INTO test_tables; 

有什么办法吗?有可能吗


Tags: andrm代码from文档sqlaccesscreate
1条回答
网友
1楼 · 发布于 2024-05-03 11:33:29

在您的情况下,我建议您为每个表创建一个新表,并使用适当的过滤器。您可以使用创建表dataset.newtable作为从T中选择x,您可以阅读更多关于它的信息。因此,您的语法是:

CREATE TABLE `your_new_table` AS SELECT * 
FROM `source_table`
WHERE  VALUES LIKE 'HEARTBEAT' AND VALUES LIKE '-7' AND VALUES LIKE '-77'

我在WHERE语句中使用了单引号,因为我假设要筛选的字段是字符串。另一个选项是使用函数REGEXP_CONTAINS(),您可以找到关于它的更多信息here。过滤器的语法将简化,如下所示:

WHERE REGEXP_CONTAINS(VALUES,"HEARTBEAT|STRING|STRING")

请注意,使用上述方法比较的值必须是字符串。因此,在使用它之前,您必须确保这个转换,您可以使用CAST()函数

此外,如果要删除源表中的行,可以使用DELETE。语法如下:

DELETE `source_table` WHERE field_1 = 'HEARTBEAT'

请注意,您将直接从源表中删除行

我希望有帮助

更新

创建一个包含所需行的新表和另一个包含“已删除”行的表

#Table with the rows which match the filter and will be "deleted"
#Notice that you have to provide the path to you table 
#`project.dataset.your_new_table`
CREATE TABLE `your_new_table` AS 
SELECT field1, field2 #select the columns you want
FROM `source_table`
WHERE  field1 LIKE 'HEARTBEAT' AND field1 LIKE '-7' AND field1 LIKE '-77'

现在,您将获得第一步中未通过过滤器的行。它们将用所需行组成表,如下所示:

CREATE TABLE `table_desired_rows` AS 
SELECT field1, field2 #select the columns you want
FROM `source_table`
WHERE  field1 NOT LIKE 'HEARTBEAT' 
   AND field1 NOT LIKE '-7' 
   AND field1 NOT LIKE '-77'

现在您有了包含原始数据的源表、包含所需行的另一个表和包含忽略行的表

第二选项:

如果您不需要原始数据,这意味着您可以修改源表。您可以先创建一个包含被忽略行的表,然后从源数据中删除这些行

#creating the table with the rows which will be deleted
#notice that you create a new table with these rows
CREATE TABLE `table_ignored_rows` AS 
SELECT field1, field2 #select the columns you want
FROM `source_table`
WHERE  field1 LIKE 'HEARTBEAT' 
   AND field1 LIKE '-7' 
   AND field1 LIKE '-77';
#now deleting the rows from the source table
DELETE `source_table` WHERE  field1 LIKE 'HEARTBEAT' 
   AND field1 LIKE '-7' 
   AND field1 LIKE '-77';

相关问题 更多 >