tencent cloud

文档反馈

检索对象内容

最后更新时间:2024-01-19 11:57:11

    简介

    本文档提供关于检索对象内容操作相关的 API 概览以及 SDK 示例代码。
    API
    操作名
    操作描述
    检索对象内容
    从指定对象(CSV 格式或者 JSON 格式)中检索内容

    SDK API 参考

    SDK 所有接口的具体参数与方法说明,请参考 SDK API

    检索对象内容

    功能说明

    COS Select 支持检索以下格式的对象数据:
    CSV 格式:对象以 CSV 格式存储,并以固定的分隔符划分。
    JSON 格式:对象以 JSON 格式存储,可以是 JSON 文件或者 JSON 列表。
    注意
    使用 COS Select,您必须具有 cos:GetObject 的授权。
    CSV、JSON 对象需要以 UTF-8 格式编码。
    COS Select 支持检索 GZIP 或者 BZIP2 压缩的 CSV、JSON 对象。
    COS Select 支持检索 SSE-COS 加密的 CSV、JSON 对象。

    示例代码

    QCloudSelectObjectContentRequest *request = [QCloudSelectObjectContentRequest new];
    // 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucket
    request.bucket = @"examplebucket-1250000000";
    // 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "dir1/object1"
    request.object = @"exampleobject";
    request.selectType = @"2";
    // 选择文件 配置
    QCloudSelectObjectContentConfig *config= [QCloudSelectObjectContentConfig new];
    /**SQL 表达式,代表您需要发起的检索操作。例如SELECT s._1 FROM COSObject s。
    这个表达式可以从 CSV 格式的对象中检索第一列内容。有关 SQL 表达式的详细介绍,
    请参见 (Select)[https://www.tencentcloud.com/document/product/436/37636?from_cn_redirect=1] 命令
    */
    config.express = @"select * from COSObject";
    /**
    表达式类型,该项为扩展项,目前只支持 SQL 表达式,仅支持 SQL 参数
    */
    config.expressionType = QCloudExpressionTypeSQL;
    /**
    描述待检索对象的格式
    */
    QCloudInputSerialization *inputS = [QCloudInputSerialization new];
    inputS.compressionType = QCloudCOSXMLCompressionTypeNONE;
    /**
    描述在JSON对象格式下所需的文件参数。
    */
    QCloudSerializationJSON *inputJson = [QCloudSerializationJSON new];
    /**
    SON 文件的类型:
    DOCUMENT 表示 JSON 文件仅包含一个独立的 JSON 对象,且该对象可以被切割成多行
    LINES 表示 JSON 对象中的每一行包含了一个独立的 JSON 对象
    合法值为 DOCUMENT 、LINES
    */
    inputJson.type = QCloudInputJSONFileTypeDocument;
    inputS.serializationJSON = inputJson;
    config.inputSerialization = inputS;
    /**
    描述检索结果的输出格式
    */
    QCloudOutputSerialization *outputS = [QCloudOutputSerialization new];
    
    QCloudSerializationJSON *outputJson = [QCloudSerializationJSON new];
    /**
    将输出结果中的记录分隔为不同行的字符,默认通过\\n进行分隔。您可以指定任意8进制字符,
    如逗号、分号、Tab 等。该参数最多支持2个字节,即您可以输入\\r\\n这类格式的分隔符。默认值为\\n
    */
    outputJson.outputRecordDelimiter = @"\\n";
    /**
    描述在JSON对象格式下所需的文件参数。
    */
    outputS.serializationJSON = outputJson;
    
    config.outputSerialization = outputS;
    /**
    是否需要返回查询进度 QueryProgress 信息,如果选中 COS Select 将周期性返回查询进度
    */
    QCloudRequestProgress *requestProgress = [QCloudRequestProgress new];
    requestProgress.enabled = @"FALSE";
    config.requestProgress =requestProgress;
    request.selectObjectContentConfig = config;
    /**
    文件存储在本地的路径
    */
    request.downloadingURL = [NSURL fileURLWithPath:QCloudFileInSubPath(@"test", @"2.json")];
    [request setDownProcessBlock:^(int64_t bytesDownload, int64_t totalBytesDownload, int64_t totalBytesExpectedToDownload) {
    NSLog(@"⏬⏬⏬⏬DOWN [Total]%lld [Downloaded]%lld [Download]%lld", totalBytesExpectedToDownload, totalBytesDownload, bytesDownload);
    }];
    
    [request setFinishBlock:^(id _Nonnull result, NSError * _Nonnull error) {
    NSLog(@"result = %@",result);
    }];
    [[QCloudCOSXMLService defaultCOSXML] SelectObjectContent:request];
    说明
    更多完整示例,请前往 GitHub 查看。
    Swift
    let request = QCloudSelectObjectContentRequest.init();
    // 存储桶名称,由BucketName-Appid 组成,可以在COS控制台查看 https://console.tencentcloud.com/cos5/bucket
    request.bucket = "examplebucket-1250000000";
    // 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "dir1/object1"
    request.object = "exampleobject";
    //代表这一接口的版本信息
    request.selectType = "2";
    // 选择文件 配置
    let config = QCloudSelectObjectContentConfig();
    /**SQL 表达式,代表您需要发起的检索操作。例如SELECT s._1 FROM COSObject s。
    这个表达式可以从 CSV 格式的对象中检索第一列内容。有关 SQL 表达式的详细介绍,
    请参见 (Select)[https://www.tencentcloud.com/document/product/436/37636?from_cn_redirect=1] 命令
    */
    
    config.express = "Select * from COSObject";
    /**
    表达式类型,该项为扩展项,目前只支持 SQL 表达式,仅支持 SQL 参数
    */
    config.expressionType = .SQL;
    
    /**
    描述待检索对象的格式
    */
    let inputS = QCloudInputSerialization();
    inputS.compressionType = .NONE;
    /**
    描述在JSON对象格式下所需的文件参数。
    */
    let inputJson = QCloudSerializationJSON.init();
    /**
    SON 文件的类型:
    DOCUMENT 表示 JSON 文件仅包含一个独立的 JSON 对象,且该对象可以被切割成多行
    LINES 表示 JSON 对象中的每一行包含了一个独立的 JSON 对象
    合法值为 DOCUMENT 、LINES
    */
    inputJson.type = .document;
    
    inputS.serializationJSON = inputJson;
    
    config.inputSerialization = inputS;
    
    /**
    描述检索结果的输出格式
    */
    let outputS = QCloudOutputSerialization.init();
    
    let outputJson = QCloudSerializationJSON.init();
    /**
    将输出结果中的记录分隔为不同行的字符,默认通过\\n进行分隔。您可以指定任意8进制字符,
    如逗号、分号、Tab 等。该参数最多支持2个字节,即您可以输入\\r\\n这类格式的分隔符。默认值为\\n
    */
    outputJson.outputRecordDelimiter = "\\n";
    outputS.serializationJSON = outputJson;
    
    config.outputSerialization = outputS;
    /**
    是否需要返回查询进度 QueryProgress 信息,如果选中 COS Select 将周期性返回查询进度
    */
    let requestProgress = QCloudRequestProgress.init();
    requestProgress.enabled = "FALSE";
    config.requestProgress = requestProgress;
    request.selectObjectContentConfig = config;
    //文件在本地的存储路径
    request.downloadingURL = NSURL.fileURL(withPath: QCloudFileInSubPath("test", "2.json"));
    request.finishBlock = {(result,error) in
    if error != nil{
    print(error!)
    }else{
    print(result!);
    }
    }
    
    QCloudCOSXMLService.defaultCOSXML().selectObjectContent(request);
    说明
    更多完整示例,请前往 GitHub 查看。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持