全部產品
Search
文件中心

Tablestore:通過命令列工具使用寬表模型

更新時間:Jun 30, 2024

Tablestore提供了管理主控台、命令列工具(Tablestore CLI)和Tablestore SDK三種訪問方式。通過Tablestore CLI使用Tablestore寬表模型(WideColumn)時,您需要根據所用平台下載相應命令列工具,然後使用命令列工具進行開通Table Store服務、建立執行個體、配置接入執行個體資訊、建立資料表、讀寫表中資料以及使用SQL查詢資料的操作。

前提條件

已擷取用於動作表格儲存的阿里雲帳號或者RAM使用者的登入資訊。

如果未註冊阿里雲帳號,您需要在阿里雲官網註冊阿里雲帳號

如果要使用RAM使用者體驗Table Store功能,您需要使用阿里雲帳號建立RAM使用者並授予RAM使用者訪問Tablestore的許可權。具體操作,請參見通過RAM Policy為RAM使用者授權

警告

阿里雲帳號AccessKey泄露會威脅您所有資源的安全。建議您使用RAM使用者AccessKey進行操作,可以有效降低AccessKey泄露的風險。

如果要使用命令列工具訪問Table Store,您還需要為阿里雲帳號或者RAM使用者建立AccessKey。具體操作,請參見擷取AccessKey

注意事項

通過命令列工具只能建立按量模式下的高效能執行個體。如果要建立按量模式下的容量型執行個體,請通過控制台建立執行個體。具體操作,請參見建立執行個體

步驟一:下載並啟動命令列工具

  1. 根據所用平台下載命令列工具。

    平台

    下載地址

    Windows

    Windows10及之後版本

    Linux

    macOS

  2. 解壓縮下載的工具包,進入命令列工具根目錄後,根據所用平台選擇相應方式啟動命令列工具。
    • 對於Windows平台,雙擊ts.exe檔案。
    • 對於Linux和Mac平台,執行./ts命令。
      說明 如果在Linux系統或者Mac系統下無可執行許可權,請執行chmod 755 ts命令賦權後再啟動命令列工具。
    啟動介面如下所示。
    # Welcome to use Command Line Tool for Aliyun Tablestore. Current Version is '2021-11-11'.
    #    _______      _      _              _
    #   |__   __|    | |    | |            | |
    #      | |  __ _ | |__  | |  ___   ___ | |_   ___  _ __    ___
    #      | | / _' || '_ \ | | / _ \ / __|| __| / _ \ | '__| / _ \
    #      | || (_| || |_) || ||  __/ \__ \| |_ | (_) || |   |  __/
    #      |_| \__,_||_.__/ |_| \___| |___/ \__| \___/ |_|    \___|
    #
    # Please visit our product website: https://www.aliyun.com/product/ots
    # You can also join our DingTalk Chat Group (ID: 11789671 or 23307953) to discuss and ask Tablestore related questions.
    #
    tablestore>

步驟二:開通Tablestore服務

如果已經開通Tablestore服務,請跳過此操作。服務僅需開通一次,開通過程免費。

  1. 通過config命令配置AccessKey資訊。更多資訊,請參見啟動並配置

    重要

    此處必須使用阿里雲帳號的AccessKey(包括AccessKey ID和AccessKey Secret)。關於擷取AccessKey的具體操作,請參見擷取AccessKey

    config --id NTSVLeBHzgX2i************ --key 7NR2DiotscDbauohSq9kSHX8BDp9****************
  2. 執行enable_service命令,開通Tablestore服務。

步驟三:建立執行個體

通過create_instance命令建立一個高效能執行個體。更多資訊,請參見執行個體操作

執行以下命令,在華東1(杭州)地區建立myinstance執行個體,執行個體類型為高效能執行個體。

create_instance -d "First instance created by CLI." -n myinstance -r cn-hangzhou

步驟四:配置接入執行個體資訊

通過config命令配置接入資訊。更多資訊,請參見啟動並配置

執行以下命令,使用已建立的myinstance執行個體配置接入資訊。

config --endpoint https://myinstance.cn-hangzhou.ots.aliyuncs.com --instance myinstance --id NTSVLeBHzgX2iZfcaXXPJ**** --key 7NR2DiotscDbauohSq9kSHX8BDp99bjs7eNpCR7o****

步驟五:建立並使用資料表

建立資料表後,選擇要進行操作的資料表,用於後續表操作或者資料操作。更多資訊,請參見資料表操作

  1. 執行如下命令,建立order資料表。

    create -t order --pk '[{"c":"id","t":"string"}]'
  2. 執行如下命令,使用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"}]'
  • 讀取一行資料

    以下樣本用於讀取主鍵列值為“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    |
    +----------------------------------+-------+--------+---------+-------------+---------------+--------+--------+----------+-------------+--------+-------+---------------+-------+--------+------------+
  • 更新一行資料

    以下樣本用於更新主鍵列為“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
  • 匯入資料

    下載範例資料壓縮包到本地並解壓,然後執行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.
  • 掃描資料

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

    scan --limit 10
  • 刪除一行資料

    以下樣本用於刪除主鍵列值為“000000114d884ca1dbd6b9a58e8d0d94”的行資料。

    delete --pk '["000000114d884ca1dbd6b9a58e8d0d94"]'
  • 匯出資料

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

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

    scan -o /tmp/mydata.json -c pId,oId,cName

步驟七:使用SQL查詢資料

SQL查詢相容MySQL的查詢文法,同時提供基礎的SQL DDL建表能力。對於已有資料表,通過執行CREATE TABLE一鍵自動建立映射關係後,您可以使用SQL方式訪問表中資料。更多資訊,請參見SQL查詢

如果要使用SQL語句快速查詢表中資料,請執行以下步驟:

  1. 執行sql命令,進入SQL模式。

  2. 執行以下命令,為order資料表綁定映射關係。

    說明

    資料表與映射表的欄位類型對應關係請參見SQL資料類型映射

    CREATE TABLE `order` (
        `id` VARCHAR(1024),
        `cId` MEDIUMTEXT,
        `cName` MEDIUMTEXT,
        `hasPaid` BOOL,
        `oId` MEDIUMTEXT,
        `orderTime` BIGINT(20),
        `pBrand` MEDIUMTEXT,
        `pCount` BIGINT(20),
        `pId` MEDIUMTEXT,
        `pName` MEDIUMTEXT,
        `pPrice` DOUBLE,
        `pType` MEDIUMTEXT,
        `payTime` BIGINT(20),
        `sId` MEDIUMTEXT,
        `sName` MEDIUMTEXT,
        `totalPrice` DOUBLE,
        PRIMARY KEY(`id`)
    );
  3. 根據需要查詢order表中的資料。

    • 樣本一:查詢10條售貨員姓名為“售周五”的訂單,按照訂單總金額升序排列。

      SELECT * FROM `order` WHERE sName = "售周五" ORDER BY totalPrice ASC LIMIT 10;
    • 樣本二:統計產品類型為“手機”的訂單條數。

      SELECT count(*) FROM `order` WHERE pType = "手機";
    • 樣本三:統計產品個數大於1的訂單條數。

      SELECT count(*) FROM `order` WHERE pCount > 1;

如果要退出SQL模式,請執行exit;命令。

常見問題

相關文檔