表格存储SQL查询及索引

十年河东,十年河西,莫欺少年穷

学无止境,精益求精

表格存储.NET SDK从5.0.0版本开始支持SQL查询功能。使用SQL查询功能时,请确保获取了最新的.NET SDK版本。关于.NET SDK历史迭代版本的更多信息,请参见.NET SDK历史迭代版本

1、创建表的映射关系

/// <summary>
/// 创建数据表的映射关系。
/// </summary>
/// <param name="otsClient"></param>
public static void CreateMappingTable(OTSClient otsClient)
{
    string sqlCommand = @"CREATE TABLE `test_table` (
        `pk0` VARCHAR(1024),
        `pk1` BIGINT(20),
        `col0` MEDIUMTEXT,
        `col1` BIGINT(20),
        `col2` DOUBLE,
        `col3` BOOL,
        `col4` MEDIUMBLOB,
        `date_col` MEDIUMTEXT,
        `geo_col` MEDIUMTEXT,
        `col0_v1` MEDIUMTEXT,
        `col0_v2` MEDIUMTEXT,
        PRIMARY KEY(`pk0`,`pk1`)
    );";

    SQLQueryRequest sqlQueryRequest = new SQLQueryRequest(sqlCommand);

    SQLQueryResponse sqlQueryResponse = otsClient.SQLQuery(sqlQueryRequest);
}

2、通过阿里云工具常见映射

点击加号

 

 

配置并生成sql

 执行sql后,就将表格存储和sql表映射成功了

 2、创建多元索引

/// <summary>
/// 创建一个多元索引,包含Keyword_type_col、Long_type_col、Text_type_col三个属性列,类型分别设置为不分词字符串(Keyword)、整型(Long)、分词字符串(Text)。
/// </summary>
/// <param name="otsClient"></param>
public static void CreateSearchIndex(OTSClient otsClient)
{
    //设置数据表名称和多元索引名称。
    CreateSearchIndexRequest request = new CreateSearchIndexRequest(TableName, IndexName);
    List<FieldSchema> FieldSchemas = new List<FieldSchema>() {
        new FieldSchema(Keyword_type_col,FieldType.KEYWORD){ //设置字段名和字段类型。
            index =true, //设置开启索引。
            EnableSortAndAgg =true //设置开启排序与统计聚合功能。
        },
        new FieldSchema(Long_type_col,FieldType.LONG){ index=true,EnableSortAndAgg=true},
        new FieldSchema(Text_type_col,FieldType.TEXT){ index=true}
    };
    request.IndexSchame = new IndexSchema()
    {
        FieldSchemas = FieldSchemas
    };
    //调用client创建多元索引。
    CreateSearchIndexResponse response = otsClient.CreateSearchIndex(request);
    Console.WriteLine("Searchindex is created: " + IndexName);
}

通过阿阿里云工具创建索引更方便,如下:

 3、查询数据

通过sql查询

/// <summary>
/// 查询数据。
/// </summary>
/// <param name="otsClient"></param>
public static void QueryData(OTSClient otsClient)
{
    SQLQueryRequest sqlQueryRequest = new SQLQueryRequest("select pk0,pk1,col0,col1,date_col,geo_col from test_table limit 20");

    SQLQueryResponse sqlQueryResponse = otsClient.SQLQuery(sqlQueryRequest);

    SQLTableMeta sqlTableMeta = sqlQueryResponse.GetSQLResultSet().GetSQLTableMeta();
    Console.WriteLine(JsonConvert.SerializeObject(sqlTableMeta.GetSchema()));

    ISQLResultSet resultSet = sqlQueryResponse.GetSQLResultSet();
    while (resultSet.HasNext())
    {
        ISQLRow row = resultSet.Next();
        Console.WriteLine(row.GetString("pk0") + " , " + row.GetLong("pk1") + " , " + row.GetString("col0") + " , " +
                          row.GetLong("col1") + " , " + row.GetString("date_col") + " , " + row.GetString("geo_col"));
    }
}

阿里云工具查询

 4、阿里云借助sql功能查询是按照次数收费的,也可以采用传统模式查询,但比较繁琐,如下sdk

请参考:

总之,可以自行查看阿里云sdk

 

posted @ 2024-10-12 10:21  天才卧龙  阅读(6)  评论(0编辑  收藏  举报