数据操作

创建数据表后,您可以通过命令行工具在数据表中插入新数据、更新一行数据、读取数据、删除一行数据、扫描数据以及导入导出数据。

插入新数据

在表中插入新数据。您也可以通过导入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
  • LinuxMac平台

    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_starttime_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
  • LinuxMac平台

    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_starttime_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

    以下示例用于导出当前表中uidname列的数据到本地文件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