資料操作

更新時間:
Copy as MD

通過命令列工具插入、讀取、更新、刪除、掃描以及匯入匯出資料表中的資料。

前提條件

  • 已完成命令列工具的安裝和訪問憑證配置。具體操作,請參見命令列工具

  • 已建立資料表。具體操作,請參見資料表操作

執行資料操作前,請先通過以下命令選定目標資料表。

use -t <tableName>

插入資料

在資料表中插入一行資料。

put --pk '<pk_values>' --attr '<attr_json>'

參數

必填

說明

-k,--pk

資料表主鍵的值,以 JSON 數組表示。

重要
  • 設定的主鍵個數和類型必須和資料表的主鍵個數和類型一致。

  • 當主鍵為自增列時,將自增列的值設定為預留位置 null。

-a,--attr

屬性列,以 JSON 數組表示。每個屬性列包含如下欄位:

  • c(必選):屬性列名稱。

  • v(必選):屬性列的值。

  • t(可選):屬性列類型,取值為 integer、string(UTF-8 編碼字串)、binary、boolean、double。當屬性列類型為 binary 時必須設定此欄位。

  • ts(可選):時間戳記,即資料的版本號碼。如果不設定此參數,則預設由系統自動產生。

--condition

行存在性條件,支援條件更新。取值:

  • ignore(預設):無論此行是否存在均會插入新資料,已存在的行會被覆蓋。

  • exist:只有此行存在時才插入新資料,覆蓋原有資料。

  • not_exist:只有此行不存在時才插入資料。

-i,--input

通過 JSON 格式的設定檔插入資料。使用設定檔時,無需指定 --pk 和 --attr。

通過設定檔插入資料的命令格式:

Windows

put -i D:\\localpath\\filename.json

Linux 和 macOS

put -i /localpath/filename.json

設定檔樣本:

{
    "PK":{
        "Values":["86", 6771]
    },
    "Attr":{
        "Values":[
            {"C":"age", "V":32, "TS":1626860801604, "IsInt":true}
        ]
    }
}

樣本

  • 插入一行資料,第一主鍵列值為 "86",第二主鍵列值為 6771,屬性列有 name 和 country 兩列。

    put --pk '["86", 6771]' --attr '[{"c":"name", "v":"redchen"}, {"c":"country", "v":"china"}]'
  • 在行不存在時插入資料。

    put --pk '["86", 6771]' --attr '[{"c":"name", "v":"redchen"}, {"c":"country", "v":"china"}]' --condition not_exist

讀取資料

根據主鍵讀取一行資料。

說明

如果讀取的資料行不存在,則返回結果為空白。

get --pk '<pk_values>'

參數

必填

說明

-k,--pk

資料表主鍵的值,以 JSON 數組表示。設定的主鍵個數和類型必須和資料表的主鍵個數和類型一致。

-c,--columns

讀取的列集合,列名可以是主鍵列或屬性列,多列以逗號分隔。不設定則返回整行資料。

--max_version

最多讀取的版本數。

--time_range_start

讀取版本號碼範圍內的資料。time_range_start 和 time_range_end 分別表示起始時間戳記和結束時間戳記,範圍為左閉右開區間。

--time_range_end

--time_range_specific

讀取特定版本號碼的資料。

-o,--output

輸出查詢結果到本地檔案中。

樣本

讀取第一主鍵列值為 "86"、第二主鍵列值為 6771 的行資料。

get --pk '["86", 6771]'

更新資料

更新資料表中一行資料的屬性列。

update --pk '<pk_values>' --attr '<attr_json>'

參數

必填

說明

-k,--pk

資料表主鍵的值,以 JSON 數組表示。設定的主鍵個數和類型必須和資料表的主鍵個數和類型一致。

--attr

屬性列,以 JSON 數組表示。每個屬性列包含如下欄位:

  • c(必選):屬性列名稱。

  • v(必選):屬性列的值。

  • t(可選):屬性列類型,取值為 integer、string(UTF-8 編碼字串)、binary、boolean、double。當屬性列類型為 binary 時必須設定此欄位。

  • ts(可選):時間戳記,即資料的版本號碼。如果不設定此參數,則預設由系統自動產生。

--delete

指定要刪除的屬性列名稱,需與--attr '[]'配合使用,表示僅刪除指定屬性列,不更新其他屬性列。刪除屬性列時,--delete 與 --attr 均為必填項。

--condition

行存在性條件,支援條件更新。取值:

  • ignore(預設):無論此行是否存在均會更新資料。

  • exist:只有此行存在時才更新資料。

  • not_exist:只有此行不存在時才插入資料。

-i,--input

通過 JSON 格式的設定檔更新資料。使用設定檔時,無需指定 --pk 和 --attr。

通過設定檔更新資料的命令格式:

Windows

update -i D:\\localpath\\filename.json

Linux 和 macOS

update -i /localpath/filename.json

設定檔格式與插入資料一致。

樣本

  • 更新第一主鍵列值為 "86"、第二主鍵列值為 6771 的行資料。

    update --pk '["86", 6771]' --attr '[{"c":"name", "v":"redchen"}, {"c":"country", "v":"china"}]' --condition ignore
  • 刪除主索引值為 "abc" 的行中 aaa 屬性列。

    update --pk '["abc"]' --delete aaa --attr '[]'

刪除資料

根據主鍵刪除一行資料。

delete --pk '<pk_values>'

參數

必填

說明

-k,--pk

資料表主鍵的值,以 JSON 數組表示。設定的主鍵個數和類型必須和資料表的主鍵個數和類型一致。

樣本

刪除第一主鍵列值為 "86"、第二主鍵列值為 6771 的行資料。

delete --pk '["86", 6771]'

掃描資料

掃描擷取資料表中所有資料或指定行數的資料。

scan --limit <n>

參數

必填

說明

--limit

本次掃描返回的最大行數。不設定則掃描整表所有資料。

樣本

掃描擷取資料表中最多 10 行資料。

scan --limit 10

匯出資料

匯出資料表中的資料到本地 JSON 檔案。

scan -o /localpath/filename.json

參數

必填

說明

-o,--output

匯出資料到指定的本地檔案路徑。

-c,--columns

匯出的列集合,列名可以是主鍵列或屬性列,多列以逗號分隔。不設定則匯出整行資料。

--max_version

最多匯出的版本數。

--time_range_start

匯出版本號碼範圍內的資料。time_range_start 和 time_range_end 分別表示起始時間戳記和結束時間戳記,範圍為左閉右開區間。

--time_range_end

--time_range_specific

匯出特定版本號碼的資料。

--backward

匯出資料按照主鍵降序排列。

-l,--limit

本次匯出最多返回的行數。

-b,--begin

匯出範圍的起始點和結束點,主鍵範圍為左閉右開區間。

說明
  • --begin 值為 [null,null] 時,表示起始點為 [INF_MIN,INF_MIN],即各主鍵列從最小值開始。

  • --end 值為 [null,null] 時,表示結束點為 [INF_MAX,INF_MAX],即各主鍵列到最大值結束。

-e,--end

樣本

  • 匯出當前表中全部資料到本地檔案 mydata.json。

    scan -o /tmp/mydata.json
  • 匯出 uid 和 name 列的資料。

    scan -o /tmp/mydata.json -c uid,name
  • 匯出指定主鍵範圍內的資料。

    scan -o /tmp/mydata.json -b '["86", 6771]' -e '["86", 6775]'

匯入資料

匯入本地 JSON 檔案中的資料到資料表中。

重要

如果本地 JSON 檔案所在路徑中存在漢字,則匯入資料時會出錯。

import -i /localpath/filename.json

參數

必填

說明

-a,--action

匯入資料的模式。取值:

  • put(預設):如果某行資料已存在,則先刪除原行資料(原行所有列及所有版本的資料),再寫入新行資料。

  • update:如果該行已存在,可新增或刪除屬性列、刪除屬性列指定版本的資料,或更新已有屬性列的值。如果該行不存在,則新增一行資料。

-i,--input

JSON 格式的本機資料檔案路徑。

重要
  • 主鍵個數和類型必須和資料表的主鍵個數和類型一致。

  • 當主鍵為自增列時,需將自增列的值設定為預留位置 null。

--ignore_version

忽略時間戳記檢查,使用目前時間作為時間戳記。

資料檔案格式(每行一條 JSON 記錄):

{"PK":{"Values":["redchen",0]},"Attr":{"Values":[{"C":"country","V":"china0"},{"C":"name","V":"redchen0"}]}}
{"PK":{"Values":["redchen",1]},"Attr":{"Values":[{"C":"country","V":"china1"},{"C":"name","V":"redchen1"}]}}

樣本

  • 匯入 mydata.json 檔案的資料到當前表。

    import -i /tmp/mydata.json
  • 匯入資料並使用目前時間作為時間戳記。

    import -i /tmp/mydata.json --ignore_version