使用数据操纵语言更新表数据

本页面介绍如何使用 DML 更新和删除 BigQuery 表中的数据,但未涉及如何使用 DML 向现有表添加行。如需了解如何使用 DML 添加行,请参阅 DML 语法参考中的 INSERT 语句

请注意,BigQuery 中的 DML 存在一些限制已知问题。DML 还有自己的配额价格

更新数据

使用以下示例文件,按照下面的说明执行操作。该文件表示一个包含 IP 地址列的表,而您想要屏蔽此列以实现匿名化:

执行下列步骤,将示例数据加载到表中,并更新 ip_address 列中的值:

步骤 1. 将 JSON 文件加载UserSessions 表中。

步骤 2。 要遮盖每行的 ip_address 列中的最后八位字节,请运行以下 DML 查询

UPDATE sample_db.UserSessions
SET ip_address = REGEXP_REPLACE(ip_address, r"(\.[0-9]+)$", ".0")
WHERE TRUE

删除数据

使用以下示例文件,按照下面的说明执行操作。这些文件表示一个数据集,该数据集具有多个用户会话分析数据表以及一个待删除用户表。

执行下列步骤,将数据加载到三个表中,然后删除 DeletedUsers 表中列出的用户。

步骤 1. 分别将 JSON 文件加载到 DeletedUsers、Users 和 UserSessions 表中。

Console

  1. 打开 GCP Console
  2. 资源列表中选择数据集
  3. 点击创建表

    创建表

  4. 对于基于以下数据创建表,选择上传

  5. 对于选择文件,浏览并选择您已下载的文件。

    浏览文件

  6. 对于文件格式,选择 JSON(以换行符分隔)

  7. 选择适当的表名称

  8. 架构下,点击添加字段并为表中的每列输入名称,然后选择适当的类型

    • 点击添加字段并重复该步骤,直到为表的所有列都输入了数据。
  9. 点击 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

经典版界面

  1. 打开 BigQuery 网页界面
  2. 将鼠标悬停在数据集 ID 上。
  3. 点击数据集 ID 旁边的箭头 数据集名称旁边的箭头
  4. 点击 Create new table
  5. 对于 Location,选择 File upload
  6. 对于 File format,选择 JSON (newline delimited)
  7. 选择 Table name
  8. Schema 下,为表中的各列输入 Name,并选择适当的 Type

    • 点击 Add field 并重复该步骤,直到为表的所有列都输入了数据。
  9. 点击 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

CLI

要使用 bq 命令行工具创建表,请使用 bq load 命令。提供 --location 标志并将值设置为您的位置--location 是可选标志。例如,如果您在 asia-northeast1(东京)区域使用 BigQuery,则 load 命令如下所示:

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)
    

后续步骤

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面