表格存储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