全部產品
Search
文件中心

Tablestore:資料操作

更新時間:Sep 11, 2024

建立資料表後,您可以通過命令列工具在資料表中插入新資料、更新一行資料、讀取資料、刪除一行資料、掃描資料以及匯入匯出資料。

插入新資料

在表中插入新資料。您也可以通過匯入JSON格式的設定檔來插入新資料到表中。

命令格式

put --pk '[primaryKeyValue, primaryKeyValue]' --attr '[{"c":"attributeColumnName", "v":"attributeColumnValue"}, {"c":"attributeColumnName", "v":"attributeColumnValue", "ts":timestamp}]' --condition condition

配置項說明請參見下表。

參數

是否必填

樣本值

說明

-k,--pk

["86", 6771]

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

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

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

-a,--attr

[{"c":"name", "v":"redchen"}, {"c":"country", "v":"china", "t":"string", "ts":15327798534}]

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

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

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

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

  • ts(可選):時間戳記即資料的版本號碼,可以由系統自動產生或者自訂,如果不設定此參數,則預設由系統自動產生。更多資訊,請參見資料版本和生命週期

--condition

ignore

使用條件更新,可以設定原行的存在性條件。取值範圍如下:

  • ignore(預設):表示無論此行是否存在均會插入新資料,如果之前行已存在,則寫入資料時會覆蓋原有資料。

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

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

關於條件更新的更多資訊,請參見條件更新

-i, --input

/temp/inputdata.json

通過JSON格式的設定檔插入資料。

您也可以通過設定檔插入資料,命令格式如下:

  • Windows平台

    put -i D:\\localpath\\filename.json
  • Linux和Mac平台

    put -i /localpath/filename.json

設定檔的樣本如下:

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

樣本

  • 樣本1

    以下樣本用於在資料表中插入一行資料。該行的第一主鍵列值為“86”,第二主鍵列值為6771,屬性列有name(string類型)和country(string類型)兩列。

    put --pk '["86", 6771]' --attr '[{"c":"name", "v":"redchen"}, {"c":"country", "v":"china"}]'
  • 樣本2

    以下樣本用於在資料表中插入一行資料。該行的第一主鍵列值為“86”,第二主鍵列值為6771,屬性列有name(string類型)和country(string類型)兩列。無論此行是否存在均會插入新資料,如果之前行已存在,則寫入資料時會覆蓋原有資料。

    put --pk '["86", 6771]' --attr '[{"c":"name", "v":"redchen"}, {"c":"country", "v":"china"}]'  --condition ignore
  • 樣本3

    以下樣本用於在資料表中插入一行資料。該行的第一主鍵列值為“86”,第二主鍵列值為6771,屬性列有name(string類型)和country(string類型)兩列,並且country列的時間戳記為15327798534。

    put --pk '["86", 6771]' --attr '[{"c":"name", "v":"redchen"}, {"c":"country", "v":"china", "t":"string", "ts":15327798534}]'
  • 樣本4

    當資料表中第二主鍵列為自增列時,以下樣本用於在資料表中插入一行資料。該行的第一主鍵列值為“86”,第二主鍵列值為null,屬性列有name(string類型)和country(string類型)兩列。

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

讀取資料

讀取表中的資料。您也可以將讀取的資料匯出到本地JSON格式的檔案中。

說明

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

命令格式

get --pk '[primaryKeyValue,primaryKeyValue]'

配置項說明請參見下表。

配置項

是否必填

樣本值

說明

-k,--pk

["86",6771]

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

重要

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

-c,--columns

name,uid

讀取的列集合,列名可以是主鍵列或屬性列。如果不設定返回的列名,則返回整行資料。

--max_version

1

最多讀取的版本數。

--time_range_start

1626860469000

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

--time_range_end

1626865270000

--time_range_specific

1626862870000

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

-o, --output

/tmp/querydata.json

輸出查詢結果到本地JSON格式的檔案中。

樣本

以下樣本用於讀取第一主鍵列值為“86”,第二主鍵列值為6771的行資料。

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

更新一行資料

更新表中的資料。您也可以通過匯入JSON格式的設定檔來更新表中資料。

命令格式

update --pk '[primaryKeyValue, primaryKeyValue]' --attr '[{"c":"attributeColumnName", "v":"attributeColumnValue"}, {"c":"attributeColumnName", "v":"attributeColumnValue", "ts":timestamp}]' --condition condition

配置項說明請參見下表。

參數

是否必填

樣本值

說明

-k,--pk

["86", 6771]

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

重要

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

--attr

[{"c":"name", "v":"redchen"}, {"c":"country", "v":"china", "ts":15327798534}]

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

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

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

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

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

--condition

ignore

使用條件更新,可以設定原行的存在性條件。取值範圍如下:

  • ignore(預設):表示無論此行是否存在均會插入新資料,如果之前行已存在,則寫入資料時會覆蓋原有資料。

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

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

關於條件更新的更多資訊,請參見條件更新

-i, --input

/tmp/inputdata.json

通過JSON格式的設定檔更新資料。

您也可以通過設定檔更新資料,命令格式如下:

  • Windows平台

    update -i D:\\localpath\\filename.json
  • Linux和Mac平台

    update -i /localpath/filename.json

設定檔的樣本如下:

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

樣本

以下樣本用於更新第一主鍵列為“86”,第二主鍵列為6771的行資料。無論此行是否存在均會插入新資料,如果之前行已存在,則寫入資料時會覆蓋原有資料。

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

刪除一行資料

根據主鍵刪除一行資料。

命令格式

delete --pk '[primaryKeyValue,primaryKeyValue]'

配置項說明請參見下表。

參數

是否必填

樣本值

說明

-k,--pk

["86", 6771]

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

重要

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

樣本

以下樣本用於刪除第一主鍵列值為“86”,第二主鍵列值為6771的行資料。

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

掃描資料

掃描擷取整表中所有資料或者擷取最多指定個數的行資料。

命令格式

scan --limit limit

配置項說明請見下表。

配置項

是否必填

樣本值

說明

--limit

10

本次掃描返回的最大行數,可不配置。如果不設定此項,則表示掃描整表中所有資料。

樣本

以下樣本用於掃描擷取資料表中的最多10行資料。

scan --limit 10

匯出資料

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

命令格式

scan -o /localpath/filename.json -c attributeColumnName,attributeColumnName,attributeColumnName

配置項說明請參見下表。

配置項

是否必填

樣本值

說明

-c, --columns

uid,name

匯出的列集合,列名可以是主鍵列或屬性列。如果不設定列名,則匯出整行資料。

--max_version

1

最多匯出的版本數。

--time_range_start

1626865596000

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

--time_range_end

1626869196000

--time_range_specific

1626867396000

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

--backward

不涉及

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

-o, --output

/tmp/mydata.json

輸出查詢結果到本地指定路徑的JSON格式檔案中。

-l,--limit

10

本次查詢最多返回的行數。

-b,--begin

'["86", 6771]'

匯出範圍起始點和結束點之間的資料。主鍵範圍為前閉後開的區間。

說明
  • 如果--begin值為[null,null],代表匯出範圍起始點為[INF_MIN,INF_MIN],即第一主鍵列和第二主鍵列的資料起始點為最小值(無窮小)。

  • 如果--end值為[null,null],代表匯出範圍結束點為[INF_MAX,INF_MAX],即第一主鍵列和第二主鍵列的資料結束點為最大值(無窮大)。

-e,--end

'["86", 6775]'

樣本

  • 樣本1

    以下樣本用於匯出當前表中全部資料到本地檔案mydata.json。

    scan -o /tmp/mydata.json
  • 樣本2

    以下樣本用於匯出當前表中uid和name列的資料到本地檔案mydata.json。

    scan -o /tmp/mydata.json -c uid,name
  • 樣本3

    以下樣本用於匯出當前表中在指定主鍵範圍內的資料到本地檔案mydata.json。其中起始點的第一主鍵列為“86”,第二主鍵列為6771,結束點的第一主鍵列為“86”,第二主鍵列為6775。

    scan -o D:\\0testreport\\mydata.json -b '["86", 6771]' -e '["86", 6775]'
  • 樣本4

    以下樣本用於匯出當前表中在指定主鍵範圍內的資料到本地檔案mydata.json。其中第一主鍵列為“50”到“100”的資料,第二主鍵列不指定範圍。

    scan -o /tmp/mydata.json -b '["50",null]' -e '["100",null]'

匯入資料

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

重要

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

命令格式

import -i /localpath/filename.json --ignore_version

配置項說明請參見下表。

配置項

是否必填

樣本值

說明

-a,--action

put

匯入資料的模式。取值範圍如下:

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

  • update:如果某行資料已存在,可以增加和刪除一行中的屬性列,刪除屬性列指定版本的資料,或者更新已存在的屬性列的值。如果某行資料不存在,則新增一行資料。

-i, --input

/tmp/inputdata.json

通過JSON格式的本地檔案匯入資料到當前表。

--ignore_version

不涉及

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

本地檔案的配置樣本如下:

{"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"}]}}                              

樣本

  • 樣本1

    以下樣本用於匯入mydata.json檔案的資料到當前表。

    import -i /tmp/mydata.json
  • 樣本2

    以下樣本用於匯入mydata.json檔案的資料到當前表,且使用目前時間作為時間戳記。

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