通过命令行工具您可以在数据表中插入新数据、更新一行数据、读取数据、删除一行数据、扫描数据以及导入导出数据。
插入新数据
在表中插入新数据。您也可以通过导入JSON格式的配置文件来插入新数据到表中。
- 命令格式
put --pk '[primaryKeyValue, primaryKeyValue]' --attr '[{"c":"attributeColumnName", "v":"attributeColumnValue"}, {"c":"attributeColumnName", "v":"attributeColumnValue", "ts":timestamp}]' --condition condition
配置项说明请参见下表。
参数 是否必填 示例值 说明 -p,--pk 是 ["86", 6771] 数据表主键的值,以数组表示。 重要- 设置的主键个数和类型必须和数据表的主键个数和类型一致。
- 当主键为自增列时,只需将自增列的值设置为占位符null。
--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 } ] } }
- 示例
在数据表中插入一行数据。该行的第一主键列值为“86”,第二主键列值为6771,属性列有name(string类型)和country(string类型)两列。
put --pk '["86", 6771]' --attr '[{"c":"name", "v":"redchen"}, {"c":"country", "v":"china"}]'
在数据表中插入一行数据,该行的第一主键列值为“86”,第二主键列值为6771,属性列有name(string类型)和country(string类型)两列。无论此行是否存在均会插入新数据,如果之前行已存在,则写入数据时会覆盖原有数据。put --pk '["86", 6771]' --attr '[{"c":"name", "v":"redchen"}, {"c":"country", "v":"china"}]' --condition ignore
在数据表中插入一行数据,该行的第一主键列值为“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}]'
当数据表中第二主键列为自增列时,在数据表中插入一行数据。该行的第一主键列值为“86”,第二主键列值为null,属性列有name(string类型)和country(string类型)两列。put --pk '["86", null]' --attr '[{"c":"name", "v":"redchen"}, {"c":"country", "v":"china"}]'
读取数据
读取表中的数据。您也可以将读取的数据导出到本地JSON格式的文件中。
说明 如果读取的数据行不存在,则返回结果为空。
- 命令格式
get --pk '[primaryKeyValue,primaryKeyValue]'
配置项说明请参见下表。
配置项 是否必填 示例值 说明 -p,--pk 是 ["86",6771] 数据表主键的值,以数组表示。 重要 设置的主键个数和类型必须和数据表的主键个数和类型一致。--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
配置项说明请参见下表。参数 是否必填 示例值 说明 -p,--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]'
- 示例
删除第一主键列值为“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 否 1000 导出范围起始点和结束点之间的数据。 -e,--end 否 2000 - 示例
导出当前表中全部数据到本地文件mydata.json。
scan -o /tmp/mydata.json
导出当前表中uid和name列的数据到本地文件mydata.json。scan -o /tmp/mydata.json -c uid,name
导入数据
导入本地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"}]}}
- 示例
导入mydata.json文件的数据到当前表。
import -i /tmp/mydata.json
导入mydata.json文件的数据到当前表,且使用当前时间作为时间戳。import -i /tmp/mydata.json --ignore_version