使用資料操縱語言更新資料表資料

本頁面說明如何使用 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 資料表。

主控台

  1. 開啟 GCP 主控台
  2. 從「Resources」(資源) 清單中選取資料集。
  3. 按一下 [Create table] (建立資料表)

    建立資料表

  4. 在「Create table from」(使用下列資料建立資料表) 部分,選取 [Upload] (上傳)

  5. 在「Select file」(選取檔案) 部分,瀏覽並選取您下載的檔案。

    瀏覽檔案

  6. 從「File format」(檔案格式) 中選取 [JSON (newline delimited)] (JSON (以換行符號分隔))

  7. 選擇適當的「Table name」(資料表名稱)

  8. 在「Schema」(結構定義) 下方,按一下 [Add field] (新增欄位) 並為資料表的每個資料欄輸入 [Name] (名稱),然後選取適當的 [Type] (類型)

    • 按一下 [Add field] (新增欄位) 並重複步驟直至您已在資料表中輸入所有資料欄。
  9. 按一下 [Create table] (建立資料表)

範例資料表的結構定義如下:

  • DeletedUsers
    • 名稱為 id,類型為 INTEGER
  • 使用者
    • 名稱為 id,類型為 INTEGER
    • 名稱為 date_joined,類型為 TIMESTAMP
  • UserSessions
    • 名稱為 id,類型為 STRING
    • 名稱為 user_id,類型為 INTEGER
    • 名稱為 login_time,類型為 TIMESTAMP
    • 名稱為 logout_time,類型為 TIMESTAMP
    • 名稱為 ip_address,類型為 STRING

傳統版 UI

  1. 開啟 BigQuery 網頁版 UI
  2. 將游標懸停在資料集 ID 上。
  3. 按一下資料集 ID 旁的箭頭 資料集名稱旁的箭號
  4. 按一下 [Create new table] (建立新資料表)
  5. 針對「Location」(位置) 選取 [File upload] (檔案上傳)
  6. 從「File format」(檔案格式) 中選取 [JSON (newline delimited)] (JSON (以換行符號分隔))
  7. 選擇資料表名稱
  8. 在「Schema」(結構定義) 中,針對資料表中的各個資料欄輸入「名稱」並選取適當的 [Type] (類型)

    • 按一下 [Add field] (新增欄位) 並重複步驟直至您已在資料表中輸入所有資料欄。
  9. 按一下 [Create table] (建立資料表)

範例資料表的結構定義如下:

  • DeletedUsers
    • 名稱為 id,類型為 INTEGER
  • 使用者
    • 名稱為 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 (Tokyo) 地區使用 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)
    

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
需要協助嗎?請前往我們的支援網頁