使用数据操纵语言更新表数据
本页面介绍如何使用数据操纵语言 DML 更新和删除 BigQuery 表中的数据,但未涉及如何使用 DML 向现有表添加行。如需了解如何使用 DML 添加行,请参阅 DML 语法参考中的 INSERT
语句。
请注意,BigQuery 中的 DML 存在一些限制。DML 也有自己的价格。
更新数据
使用以下示例文件,按照下面的说明执行操作。该文件表示一个包含 IP 地址列的表,而您想要屏蔽此列以实现匿名化:
执行下列步骤,将示例数据加载到表中并更新 ip_address
列中的值:
第 1 步:将 JSON 文件加载到 UserSessions
表中。
第 2 步:运行以下 DML 查询,以遮盖每行的 ip_address
列中的最后一个八位字节:
UPDATE sample_db.UserSessions SET ip_address = REGEXP_REPLACE(ip_address, r"(\.[0-9]+)$", ".0") WHERE TRUE
Java
试用此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Java 设置说明进行操作。如需了解详情,请参阅 BigQuery Java API 参考文档。
Python
尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Python 设置说明进行操作。如需了解详情,请参阅 BigQuery Python API 参考文档。
删除数据
使用以下示例文件,按照下面的说明执行操作。这些文件表示一个数据集,该数据集具有多个用户会话分析数据表以及一个待删除用户表。
执行下列步骤,将数据加载到三个表中,然后删除 DeletedUsers 表中列出的用户。
第 1 步:分别加载 JSON 文件到 DeletedUsers、Users 和 UserSessions 表中。
控制台
在浏览器面板中,展开您的项目并选择数据集。
展开
操作选项,然后点击打开。在详情面板中,点击创建表
。在基于以下数据创建表部分,选择上传。
对于选择文件,浏览并选择您已下载的文件。
对于文件格式,选择 JSON(以换行符分隔)。
选择适当的表名称。
在架构下,点击添加字段并为表中的每列输入名称,然后选择适当的类型。
- 点击添加字段并重复该步骤,直到为表的所有列都输入了数据。
点击 Create table。
示例表的架构如下:
- DeletedUsers
- 名称为
id
,类型为INTEGER
- 名称为
- Users
- 名称为
id
,类型为INTEGER
- 名称为
date_joined
,类型为TIMESTAMP
- 名称为
- UserSessions
- 名称为
id
,类型为STRING
- 名称为
user_id
,类型为INTEGER
- 名称为
login_time
,类型为TIMESTAMP
- 名称为
logout_time
,类型为TIMESTAMP
- 名称为
ip_address
,类型为STRING
- 名称为
bq
如需使用 bq
命令行工具创建表,请使用 bq load
命令。添加 --location
标志并将其值设置为您的位置。--location
标志是可选的。例如,如果您在 asia-northeast1
(东京)区域使用 BigQuery,则加载命令将如下所示:
bq --location=asia-northeast1 load ...
要创建 DeleteUsers
表,请执行以下命令:
bq --location=asia-northeast1 load \
--source_format=NEWLINE_DELIMITED_JSON \
sample_db.DeletedUsers \
deletedUsersData.json \
id:integer
要创建 Users
表,请执行以下命令:
bq --location=asia-northeast1 load \
--source_format=NEWLINE_DELIMITED_JSON \
sample_db.Users \
usersData.json \
id:integer,date_joined:timestamp
要创建 UserSessions
表,请执行以下命令:
bq --location=asia-northeast1 load \
--source_format=NEWLINE_DELIMITED_JSON \
sample_db.UserSessions \
userSessionsData.json \
id:string,user_id:integer,login_time:timestamp,logout_time:timestamp,ip_address:string
第 2 步:删除与 DeletedUsers 表中的用户相关的信息。 运行以下 DML 查询:
从
UsersSessions
中删除DELETE FROM sample_db.UserSessions WHERE user_id in (SELECT id from sample_db.DeletedUsers)
从
Users
中删除DELETE FROM sample_db.Users WHERE id in (SELECT id from sample_db.DeletedUsers)
表安全性
如需控制对 BigQuery 中表的访问权限,请参阅表访问权限控制简介。