宽表模型是类Bigtable/HBase模型,可应用于元数据、大数据等多种场景,单表支持PB级数据存储和千万QPS。本文介绍如何通过命令行工具使用宽表模型。
前提条件
已创建实例。具体操作,请参见创建实例。
操作步骤
步骤一:配置接入实例信息
通过config命令配置接入信息。
执行前请使用您的实例Endpoint、实例名称、AccessKey ID、AccessKey Secret替换命令中的endpoint、instance、id、key。
config --endpoint https://myinstance.cn-hangzhou.ots.aliyuncs.com --instance myinstance --id NTSVL******************** --key 7NR2****************************************
步骤二:创建并使用数据表
创建数据表并选择要进行操作的数据表,以便进行后续表操作或者数据操作。
执行如下命令,创建order数据表。
create -t order --pk '[{"c":"id","t":"string"}]'
执行如下命令,使用order数据表。
use --wc -t order
更多信息,请参见数据表操作。
步骤三:数据操作
根据需要进行数据操作,您可以写入、更新、读取、删除或者导出数据。
插入一行数据
以下示例用于在数据表中插入一行数据。
put --pk '["000000114d884ca1dbd6b9a58e8d0d94"]' --attr '[{"c":"pBrand","v":"brand1"},{"c":"pPrice","v":1599.0},{"c":"payTime","v":1509615334404,"isint":true},{"c":"totalPrice","v":2498.99},{"c":"sName","v":"售周五"},{"c":"pId","v":"p0003004"},{"c":"oId","v":"o0039248410"},{"c":"hasPaid","v":true},{"c":"sId","v":"s0015"},{"c":"orderTime","v":1509614885965,"isint":true},{"c":"pName","v":"brand1 type"},{"c":"cName","v":"消冯八"},{"c":"pType","v":"手机"},{"c":"pCount","v":1,"isint":true},{"c":"cId","v":"c0018"}]'
导入数据
下载样例数据压缩包到本地并解压,然后执行import命令批量导入数据。
样例数据中总共包含100万条订单数据,可通过import -l参数自定义导入行数。
以下示例用于导入样例数据文件中的5万条订单数据到当前表,且使用当前时间作为时间戳。其中yourFilePath表示样例数据压缩包解压后的路径,例如
D:\\order_demo_data_1000000\\order_demo_data_1000000
。import -i yourFilePath --ignore_version -l 50000
输出结果如下所示。
Current speed is: 15800 rows/s. Total succeed count 15800, failed count 0. Current speed is: 27400 rows/s. Total succeed count 43200, failed count 0. Import finished, total count is 50000, failed 0 rows.
以下示例用于更新主键列为“000000114d884ca1dbd6b9a58e8d0d94”的行数据。无论此行是否存在均会插入新数据,如果之前行已存在,则写入数据时会覆盖原有数据。
update --pk '["000000114d884ca1dbd6b9a58e8d0d94"]' --attr '[{"c":"pBrand","v":"brand2"},{"c":"pPrice","v":1599.0},{"c":"payTime","v":1509615334404,"isint":true},{"c":"totalPrice","v":2498.99},{"c":"sName","v":"售周五"},{"c":"pId","v":"p0003004"},{"c":"oId","v":"o0039248410"},{"c":"hasPaid","v":true},{"c":"sId","v":"s0015"},{"c":"orderTime","v":1509614885965,"isint":true},{"c":"pName","v":"brand2 type"},{"c":"cName","v":"消冯八"},{"c":"pType","v":"手机"},{"c":"pCount","v":1,"isint":true},{"c":"cId","v":"c0018"}]' --condition ignore
如需使用SQL查询与分析表中数据,请参见SQL查询。
读取一行数据
以下示例用于读取主键列值为“000000114d884ca1dbd6b9a58e8d0d94”的行数据。
get --pk '["000000114d884ca1dbd6b9a58e8d0d94"]'
输出结果如下所示。
+----------------------------------+-------+--------+---------+-------------+---------------+--------+--------+----------+-------------+--------+-------+---------------+-------+--------+------------+ | id | cId | cName | hasPaid | oId | orderTime | pBrand | pCount | pId | pName | pPrice | pType | payTime | sId | sName | totalPrice | +----------------------------------+-------+--------+---------+-------------+---------------+--------+--------+----------+-------------+--------+-------+---------------+-------+--------+------------+ | 000000114d884ca1dbd6b9a58e8d0d94 | c0018 | 消冯八 | true | o0039248410 | 1509614885965 | brand1 | 1 | p0003004 | brand1 type | 1599 | 手机 | 1509615334404 | s0015 | 售周五 | 2498.99 | +----------------------------------+-------+--------+---------+-------------+---------------+--------+--------+----------+-------------+--------+-------+---------------+-------+--------+------------+
扫描数据
以下示例用于扫描获取数据表中的最多10行数据。
scan --limit 10
以下示例用于删除主键列值为“000000114d884ca1dbd6b9a58e8d0d94”的行数据。
delete --pk '["000000114d884ca1dbd6b9a58e8d0d94"]'
导出表中数据到本地JSON文件中。
以下示例用于导出当前表中pId、oId和cName列的数据到本地文件mydata.json。
scan -o /tmp/mydata.json -c pId,oId,cName
更多信息,请参见数据操作。