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

本頁說明如何使用 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. 開啟 Cloud Console
  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
  • Users
    • 名稱為 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」(結構定義) 下方,為資料表的每個資料欄輸入 [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,載入指令看起來會像是:

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)
    

後續步驟

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

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

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