본문으로 건너뛰기
최종 수정: 에

S3

설명​

S3 테이블 반환 함수(TVF)를 사용하면 S3 호환 객체 스토리지에 저장된 파일을 관계형 테이블 형식의 데이터에 접근하듯이 읽고 접근할 수 있습니다. 현재 csv/csv_with_names/csv_with_names_and_types/json/parquet/orc 파일 형식을 지원합니다.

구문​

S3(
"uri" = "<uri>",
"s3.access_key" = "<s3_access_key>",
"s3.secret_key" = "<s3_secret_key>",
"s3.region" = "<s3_region>",
"s3.endpoint" = "<s3_endpoint>",
"format" = "<format>"
[, "<optional_property_key>" = "<optional_property_value>" [, ...] ]
)

필수 매개변수​

매개변수설명
uriS3에 접근하기 위한 URI입니다. 와일드카드와 범위 패턴을 지원합니다. 자세한 내용은 파일 경로 패턴을 참조하세요. 이 함수는 use_path_style 매개변수에 따라 Path Style 또는 Virtual-hosted Style을 사용합니다.
s3.access_keyS3 액세스 키
s3.secret_keyS3 시크릿 키
s3.regionS3 리전
s3.endpointS3 엔드포인트 주소
format파일 형식입니다. csv/csv_with_names/csv_with_names_and_types/json/parquet/orc를 지원합니다.

선택 매개변수​

매개변수기본값설명비고
s3.session_token-S3 세션 토큰
use_path_stylefalseS3 SDK는 기본적으로 Virtual-hosted Style을 사용합니다. 일부 객체 스토리지 시스템은 Virtual-hosted Style을 지원하지 않을 수 있습니다. 이 매개변수를 설정하면 Path Style로 접근하도록 강제할 수 있습니다. 예를 들어 MinIO는 기본적으로 Path Style만 허용하므로 MinIO에 접근할 때는 use_path_style=true를 설정해야 합니다.
force_parsing_by_standard_urifalse비표준 URI를 표준 URI로 파싱하도록 강제합니다.
column_separator\t열 구분자
line_delimiter\n줄 구분자
compress_typeUNKNOWN압축 형식입니다. 현재 UNKNOWN/PLAIN/GZ/LZO/BZ2/LZ4FRAME/DEFLATE/SNAPPYBLOCK을 지원하며, uri 접미사를 기반으로 자동 감지합니다.
read_json_by_line"true"JSON 형식 데이터 적재에 사용합니다.JSON 데이터 적재
strip_outer_array"false"JSON 형식 데이터 적재에 사용합니다.JSON 데이터 적재
json_root비어 있음JSON 형식 데이터 적재에 사용합니다.JSON 데이터 적재
jsonpaths비어 있음JSON 형식 데이터 적재에 사용합니다.JSON 데이터 적재
num_as_stringfalseJSON 형식 데이터 적재에 사용합니다.JSON 데이터 적재
fuzzy_parsefalseJSON 형식 데이터 적재에 사용합니다.
trim_double_quotesfalseCSV 형식 데이터 적재 시 각 필드의 가장 바깥쪽 큰따옴표를 제거합니다.
skip_lines0CSV 파일의 처음 N개 줄을 건너뜁니다. csv_with_names 또는 csv_with_names_and_types 형식을 사용할 때는 이 매개변수가 적용되지 않습니다.
path_partition_keys-파일 경로에 있는 파티션 열 이름을 지정합니다. 예를 들어 경로가 /path/to/city=beijing/date="2023-07-09"인 경우, path_partition_keys="city,date"를 설정하면 경로에서 열 이름과 값을 자동으로 읽습니다.
resource-Resource 이름을 지정합니다. S3 TVF는 기존 S3 Resource를 사용하여 S3에 직접 접근할 수 있습니다. S3 Resource를 생성하는 방법은 CREATE-RESOURCE를 참조하세요. 2.1.4 버전부터 지원합니다.
enable_mapping_varbinarytruedev 버전에서는 호환성을 위해서만 허용되며 값은 무시됩니다. 외부 바이너리 데이터는 항상 VARBINARY로 매핑됩니다. Doris 4.1.5에서는 이 TVF 옵션을 계속 설정할 수 있으며 기본값은 false입니다.4.0.3부터 지원
enable_mapping_timestamp_tztrue4.1.5부터는 호환성을 위해서만 허용되며 값은 무시됩니다. Parquet Timestamp의 isAdjustedToUTC=true와 ORC의 TIMESTAMP_INSTANT는 항상 TIMESTAMPTZ로 매핑됩니다. 이 옵션이 false인 경우에도 동일합니다.4.0.3부터 지원
hive.parquet.time-zone빈 문자열선택적 문자열이며 기본값은 비어 있습니다. 4.1.5부터 지원합니다. Parquet INT96 작성기의 시간대를 지정합니다. IANA 시간대 또는 -12:00부터 +14:00까지의 오프셋을 사용할 수 있으며, CST 및 PRC와 같은 짧은 별칭은 허용되지 않습니다. Parquet을 참조하세요.4.1.5부터 지원

참고 사항​

  1. AWS S3의 표준 URI 스타일은 다음과 같습니다.

    • AWS Client Style (Hadoop S3 Style)

      s3://my-bucket/path/to/file?versionId=abc123&partNumber=77&partNumber=88
    • Virtual Host Style

      https://my-bucket.s3.us-west-1.amazonaws.com/resources/doc.txt?versionId=abc123&partNumber=77&partNumber=88
    • Path Style

      https://s3.us-west-1.amazonaws.com/my-bucket/resources/doc.txt?versionId=abc123&partNumber=77&partNumber=88

    이 세 가지 표준 URI 스타일 외에도 다음 URI 스타일을 지원하지만, 사용 빈도는 낮습니다.

    • Virtual Host AWS Client (Hadoop S3) 혼합 스타일

      s3://my-bucket.s3.us-west-1.amazonaws.com/resources/doc.txt?versionId=abc123&partNumber=77&partNumber=88
    • Path AWS Client (Hadoop S3) 혼합 스타일

      s3://s3.us-west-1.amazonaws.com/my-bucket/resources/doc.txt?versionId=abc123&partNumber=77&partNumber=88

    자세한 사용 예는 아래 예제를 참조하세요.

  2. TVF를 직접 쿼리하거나 이 TVF를 기반으로 뷰를 생성하려면 Resource에 대한 USAGE 권한이 필요합니다. TVF를 기반으로 생성한 뷰를 쿼리할 때는 해당 뷰에 대한 SELECT 권한만 있으면 됩니다.

예제​

  • S3 호환 객체 스토리지의 CSV 형식 파일 읽기 및 접근

    select * from s3("uri" = "http://127.0.0.1:9312/test2/student1.csv",
    "s3.access_key"= "minioadmin",
    "s3.secret_key" = "minioadmin",
    "s3.endpoint" = "http://127.0.0.1:9312",
    "s3.region" = "us-east-1",
    "format" = "csv",
    "use_path_style" = "true") order by c1;
  • desc function과 함께 사용 가능

    desc function s3("uri" = "http://127.0.0.1:9312/test2/student1.csv",
    "s3.access_key"= "minioadmin",
    "s3.secret_key" = "minioadmin",
    "s3.endpoint" = "http://127.0.0.1:9312",
    "s3.region" = "us-east-1",
    "format" = "csv",
    "use_path_style" = "true");
  • URL 스키마별 사용법

    http://, https:// 사용 예:

    -- Note URI Bucket notation and use_path_style parameter setting, same for HTTP.
    -- Since "use_path_style"="true" is set, Path Style will be used to access S3.
    select * from s3(
    "uri" = "https://endpoint/bucket/file/student.csv",
    "s3.access_key"= "ak",
    "s3.secret_key" = "sk",
    "s3.endpoint" = "endpoint",
    "s3.region" = "region",
    "format" = "csv",
    "use_path_style"="true");

    -- Note URI Bucket notation and use_path_style parameter setting, same for HTTP.
    -- Since "use_path_style"="false" is set, Virtual-hosted Style will be used to access S3.
    select * from s3(
    "uri" = "https://bucket.endpoint/bucket/file/student.csv",
    "s3.access_key"= "ak",
    "s3.secret_key" = "sk",
    "s3.endpoint" = "endpoint",
    "s3.region" = "region",
    "format" = "csv",
    "use_path_style"="false");

    -- Alibaba Cloud OSS and Tencent Cloud COS use Virtual-hosted Style to access S3.
    -- OSS
    select * from s3(
    "uri" = "http://example-bucket.oss-cn-beijing.aliyuncs.com/your-folder/file.parquet",
    "s3.access_key"= "ak",
    "s3.secret_key" = "sk",
    "s3.endpoint" = "oss-cn-beijing.aliyuncs.com",
    "s3.region" = "oss-cn-beijing",
    "format" = "parquet",
    "use_path_style" = "false");
    -- COS
    select * from s3(
    "uri" = "https://example-bucket.cos.ap-hongkong.myqcloud.com/your-folder/file.parquet",
    "s3.access_key"= "ak",
    "s3.secret_key" = "sk",
    "s3.endpoint" = "cos.ap-hongkong.myqcloud.com",
    "s3.region" = "ap-hongkong",
    "format" = "parquet",
    "use_path_style" = "false");

    -- MinIO
    select * from s3(
    "uri" = "s3://bucket/file.csv",
    "s3.endpoint" = "http://172.21.0.101:9000",
    "s3.access_key"= "ak",
    "s3.secret_key" = "sk",
    "s3.region" = "us-east-1",
    "format" = "csv"
    );

    -- Baidu Cloud BOS uses S3-compatible Virtual-hosted Style to access S3.
    -- BOS
    select * from s3(
    "uri" = "https://example-bucket.s3.bj.bcebos.com/your-folder/file.parquet",
    "s3.access_key"= "ak",
    "s3.secret_key" = "sk",
    "s3.region" = "bj",
    "s3.endpoint" = "http://bj.bcebos.com",
    "format" = "parquet",
    "use_path_style" = "false");
  • s3:// 사용 예:

    -- Note URI Bucket notation, no need to set use_path_style parameter.
    -- Virtual-hosted Style will be used to access S3.
    select * from s3(
    "uri" = "s3://bucket/file/student.csv",
    "s3.endpoint"= "endpont",
    "s3.region"= "region",
    "s3.access_key"= "ak",
    "s3.secret_key" = "sk",
    "format" = "csv");
  • 그 밖에 지원되는 URI 스타일 예:

    -- Virtual Host AWS Client (Hadoop S3) Mixed Style. Use by setting use_path_style=false and force_parsing_by_standard_uri=true.
    select * from s3(
    "URI" = "s3://my-bucket.s3.us-west-1.amazonaws.com/resources/doc.txt?versionId=abc123&partNumber=77&partNumber=88",
    "s3.access_key"= "ak",
    "s3.secret_key" = "sk",
    "s3.endpoint"= "endpont",
    "s3.region"= "region",
    "format" = "csv",
    "use_path_style"="false",
    "force_parsing_by_standard_uri"="true");

    -- Path AWS Client (Hadoop S3) Mixed Style. Use by setting use_path_style=true and force_parsing_by_standard_uri=true.
    select * from s3(
    "URI" = "s3://s3.us-west-1.amazonaws.com/my-bucket/resources/doc.txt?versionId=abc123&partNumber=77&partNumber=88",
    "s3.access_key"= "ak",
    "s3.secret_key" = "sk",
    "s3.endpoint"= "endpont",
    "s3.region"= "region",
    "format" = "csv",
    "use_path_style"="true",
    "force_parsing_by_standard_uri"="true");
  • CSV 형식

    S3 테이블 반환 함수는 테이블 스키마를 미리 알 수 없으므로, 파일을 한 번 읽어 테이블 스키마를 파싱합니다.

    csv 형식: S3 테이블 반환 함수는 S3에 있는 파일을 읽어 CSV 파일로 처리하고, 첫 번째 줄을 사용하여 테이블 스키마를 파싱합니다. 첫 번째 줄의 열 개수 n을 테이블 스키마의 열 개수로 사용하며, 열 이름은 자동으로 c1, c2, ..., cn으로 지정되고 모든 열의 타입은 String으로 설정됩니다. 예:

    student1.csv 파일 내용:

    1,ftw,12
    2,zs,18
    3,ww,20

    S3 TVF 사용:

    select * from s3("uri" = "http://127.0.0.1:9312/test2/student1.csv",
    "s3.access_key"= "minioadmin",
    "s3.secret_key" = "minioadmin",
    "s3.endpoint" = "http://127.0.0.1:9312",
    "s3.region" = "us-east-1",
    "format" = "csv",
    "use_path_style" = "true") order by c1;

    +------+------+------+
    | c1 | c2 | c3 |
    +------+------+------+
    | 1 | ftw | 12 |
    | 2 | zs | 18 |
    | 3 | ww | 20 |
    +------+------+------+

    desc function S3()를 사용하여 테이블 스키마를 확인할 수 있습니다:

    Desc function s3("uri" = "http://127.0.0.1:9312/test2/student1.csv",
    "s3.access_key"= "minioadmin",
    "s3.secret_key" = "minioadmin",
    "s3.endpoint" = "http://127.0.0.1:9312",
    "s3.region" = "us-east-1",
    "format" = "csv",
    "use_path_style" = "true");

    +-------+------+------+-------+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+------+------+-------+---------+-------+
    | c1 | TEXT | Yes | false | NULL | NONE |
    | c2 | TEXT | Yes | false | NULL | NONE |
    | c3 | TEXT | Yes | false | NULL | NONE |
    +-------+------+------+-------+---------+-------+
  • csv_with_names 형식

    csv_with_names 형식: 파일의 첫 번째 줄을 파싱하여 테이블 스키마의 열 개수와 이름을 결정하며, 모든 열의 타입은 String으로 설정됩니다. 예:

    student_with_names.csv 파일 내용:

    id,name,age
    1,ftw,12
    2,zs,18
    3,ww,20

    S3 TVF 사용:

    select * from s3("uri" = "http://127.0.0.1:9312/test2/student_with_names.csv",
    "s3.access_key"= "minioadmin",
    "s3.secret_key" = "minioadmin",
    "s3.endpoint" = "http://127.0.0.1:9312",
    "s3.region" = "us-east-1",
    "format" = "csv_with_names",
    "use_path_style" = "true") order by id;

    +------+------+------+
    | id | name | age |
    +------+------+------+
    | 1 | ftw | 12 |
    | 2 | zs | 18 |
    | 3 | ww | 20 |
    +------+------+------+
  • 마찬가지로 desc function S3()를 사용하여 테이블 스키마를 확인할 수 있습니다.

    desc function s3("uri" = "http://127.0.0.1:9312/test2/student_with_names.csv",
    "s3.access_key"= "minioadmin",
    "s3.secret_key" = "minioadmin",
    "s3.endpoint" = "http://127.0.0.1:9312",
    "s3.region" = "us-east-1",
    "format" = "csv_with_names",
    "use_path_style" = "true");

    +-------+------+------+-------+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+------+------+-------+---------+-------+
    | id | TEXT | Yes | false | NULL | NONE |
    | name | TEXT | Yes | false | NULL | NONE |
    | age | TEXT | Yes | false | NULL | NONE |
    +-------+------+------+-------+---------+-------+
  • csv_with_names_and_types 형식

    csv_with_names_and_types 형식: 현재 CSV 파일에서 열 타입을 파싱하는 기능은 지원하지 않습니다. 이 형식을 사용하면 S3 TVF는 첫 번째 줄을 파싱하여 테이블 스키마의 열 개수와 이름을 결정하고, 모든 열의 타입을 String으로 설정하며, 파일의 두 번째 줄은 무시합니다.

    student_with_names_and_types.csv 파일 내용:

    id,name,age
    INT,STRING,INT
    1,ftw,12
    2,zs,18
    3,ww,20

    S3 TVF 사용:

    select * from s3("uri" = "http://127.0.0.1:9312/test2/student_with_names_and_types.csv",
    "s3.access_key"= "minioadmin",
    "s3.secret_key" = "minioadmin",
    "s3.endpoint" = "http://127.0.0.1:9312",
    "s3.region" = "us-east-1",
    "format" = "csv_with_names_and_types",
    "use_path_style" = "true") order by id;

    +------+------+------+
    | id | name | age |
    +------+------+------+
    | 1 | ftw | 12 |
    | 2 | zs | 18 |
    | 3 | ww | 20 |
    +------+------+------+

    마찬가지로 desc function S3()를 사용하여 테이블 스키마를 확인할 수 있습니다:

    Desc function s3("uri" = "http://127.0.0.1:9312/test2/student_with_names_and_types.csv",
    "s3.access_key"= "minioadmin",
    "s3.secret_key" = "minioadmin",
    "s3.endpoint" = "http://127.0.0.1:9312",
    "s3.region" = "us-east-1",
    "format" = "csv_with_names_and_types",
    "use_path_style" = "true");

    +-------+------+------+-------+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+------+------+-------+---------+-------+
    | id | TEXT | Yes | false | NULL | NONE |
    | name | TEXT | Yes | false | NULL | NONE |
    | age | TEXT | Yes | false | NULL | NONE |
    +-------+------+------+-------+---------+-------+
  • JSON 형식

    json 형식: JSON 형식에는 다양한 선택 매개변수가 있습니다. 각 매개변수의 의미는 JSON 데이터 적재를 참조하세요. S3 TVF로 JSON 형식 파일을 쿼리할 때는 json_root 및 jsonpaths 매개변수를 기반으로 JSON 객체를 찾고, 객체의 key를 테이블 스키마의 열 이름으로 사용하며, 모든 열의 타입을 String으로 설정합니다. 예:

    data.json 파일 내용:

    [{"id":1, "name":"ftw", "age":18}]
    [{"id":2, "name":"xxx", "age":17}]
    [{"id":3, "name":"yyy", "age":19}]

    S3 TVF를 사용한 쿼리:

    select * from s3(
    "uri" = "http://127.0.0.1:9312/test2/data.json",
    "s3.access_key"= "minioadmin",
    "s3.secret_key" = "minioadmin",
    "s3.endpoint" = "http://127.0.0.1:9312",
    "s3.region" = "us-east-1",
    "format" = "json",
    "strip_outer_array" = "true",
    "read_json_by_line" = "true",
    "use_path_style"="true");
    +------+------+------+
    | id | name | age |
    +------+------+------+
    | 1 | ftw | 18 |
    | 2 | xxx | 17 |
    | 3 | yyy | 19 |
    +------+------+------+

    select * from s3(
    "uri" = "http://127.0.0.1:9312/test2/data.json",
    "s3.access_key"= "minioadmin",
    "s3.secret_key" = "minioadmin",
    "s3.endpoint" = "http://127.0.0.1:9312",
    "s3.region" = "us-east-1",
    "format" = "json",
    "strip_outer_array" = "true",
    "jsonpaths" = "[\"$.id\", \"$.age\"]",
    "use_path_style"="true");

    +------+------+
    | id | age |
    +------+------+
    | 1 | 18 |
    | 2 | 17 |
    | 3 | 19 |
    +------+------+
  • Parquet 형식

    parquet 형식: S3 TVF는 Parquet 파일에서 열 이름과 타입을 파싱하여 테이블 스키마를 구성할 수 있습니다. 예:

    select * from s3(
    "uri" = "http://127.0.0.1:9312/test2/test.snappy.parquet",
    "s3.access_key"= "minioadmin",
    "s3.secret_key" = "minioadmin",
    "s3.endpoint" = "http://127.0.0.1:9312",
    "s3.region" = "us-east-1",
    "format" = "parquet",
    "use_path_style"="true") limit 5;

    +-----------+------------------------------------------+----------------+----------+-------------------------+--------+-------------+---------------+---------------------+
    | p_partkey | p_name | p_mfgr | p_brand | p_type | p_size | p_container | p_retailprice | p_comment |
    +-----------+------------------------------------------+----------------+----------+-------------------------+--------+-------------+---------------+---------------------+
    | 1 | goldenrod lavender spring chocolate lace | Manufacturer#1 | Brand#13 | PROMO BURNISHED COPPER | 7 | JUMBO PKG | 901 | ly. slyly ironi |
    | 2 | blush thistle blue yellow saddle | Manufacturer#1 | Brand#13 | LARGE BRUSHED BRASS | 1 | LG CASE | 902 | lar accounts amo |
    | 3 | spring green yellow purple cornsilk | Manufacturer#4 | Brand#42 | STANDARD POLISHED BRASS | 21 | WRAP CASE | 903 | egular deposits hag |
    | 4 | cornflower chocolate smoke green pink | Manufacturer#3 | Brand#34 | SMALL PLATED BRASS | 14 | MED DRUM | 904 | p furiously r |
    | 5 | forest brown coral puff cream | Manufacturer#3 | Brand#32 | STANDARD POLISHED TIN | 15 | SM PKG | 905 | wake carefully |
    +-----------+------------------------------------------+----------------+----------+-------------------------+--------+-------------+---------------+---------------------+
    MySQL [(none)]> desc function s3(
    "uri" = "http://127.0.0.1:9312/test2/test.snappy.parquet",
    "s3.access_key"= "minioadmin",
    "s3.secret_key" = "minioadmin",
    "s3.endpoint" = "http://127.0.0.1:9312",
    "s3.region" = "us-east-1",
    "format" = "parquet",
    "use_path_style"="true");

    +---------------+--------------+------+-------+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +---------------+--------------+------+-------+---------+-------+
    | p_partkey | INT | Yes | false | NULL | NONE |
    | p_name | TEXT | Yes | false | NULL | NONE |
    | p_mfgr | TEXT | Yes | false | NULL | NONE |
    | p_brand | TEXT | Yes | false | NULL | NONE |
    | p_type | TEXT | Yes | false | NULL | NONE |
    | p_size | INT | Yes | false | NULL | NONE |
    | p_container | TEXT | Yes | false | NULL | NONE |
    | p_retailprice | DECIMAL(9,0) | Yes | false | NULL | NONE |
    | p_comment | TEXT | Yes | false | NULL | NONE |
    +---------------+--------------+------+-------+---------+-------+
  • ORC 형식

    orc 형식: 사용법은 parquet 형식과 동일하며, format 매개변수를 orc로 설정하면 됩니다.

    select * from s3(
    "uri" = "http://127.0.0.1:9312/test2/test.snappy.orc",
    "s3.access_key"= "minioadmin",
    "s3.secret_key" = "minioadmin",
    "s3.endpoint" = "http://127.0.0.1:9312",
    "s3.region" = "us-east-1",
    "format" = "orc",
    "use_path_style"="true") limit 5;

    +-----------+------------------------------------------+----------------+----------+-------------------------+--------+-------------+---------------+---------------------+
    | p_partkey | p_name | p_mfgr | p_brand | p_type | p_size | p_container | p_retailprice | p_comment |
    +-----------+------------------------------------------+----------------+----------+-------------------------+--------+-------------+---------------+---------------------+
    | 1 | goldenrod lavender spring chocolate lace | Manufacturer#1 | Brand#13 | PROMO BURNISHED COPPER | 7 | JUMBO PKG | 901 | ly. slyly ironi |
    | 2 | blush thistle blue yellow saddle | Manufacturer#1 | Brand#13 | LARGE BRUSHED BRASS | 1 | LG CASE | 902 | lar accounts amo |
    | 3 | spring green yellow purple cornsilk | Manufacturer#4 | Brand#42 | STANDARD POLISHED BRASS | 21 | WRAP CASE | 903 | egular deposits hag |
    | 4 | cornflower chocolate smoke green pink | Manufacturer#3 | Brand#34 | SMALL PLATED BRASS | 14 | MED DRUM | 904 | p furiously r |
    | 5 | forest brown coral puff cream | Manufacturer#3 | Brand#32 | STANDARD POLISHED TIN | 15 | SM PKG | 905 | wake carefully |
    +-----------+------------------------------------------+----------------+----------+-------------------------+--------+-------------+---------------+---------------------+
  • 와일드카드가 포함된 URI

    URI에서는 와일드카드와 범위 패턴을 사용하여 여러 파일을 읽을 수 있습니다. *, ?, [...], {1..10} 범위 확장을 비롯한 자세한 구문은 파일 경로 패턴을 참조하세요. 참고: 와일드카드를 사용할 때는 모든 파일의 형식이 같아야 합니다. 특히 csv, csv_with_names, csv_with_names_and_types는 서로 다른 형식입니다. S3 TVF는 첫 번째 파일을 사용하여 테이블 스키마를 파싱합니다.

    다음 두 CSV 파일이 있을 때:

    // file1.csv
    1,aaa,18
    2,qqq,20
    3,qwe,19

    // file2.csv
    5,cyx,19
    6,ftw,21

    URI에 와일드카드를 사용하여 쿼리할 수 있습니다:

    select * from s3(
    "uri" = "http://127.0.0.1:9312/test2/file*.csv",
    "s3.access_key"= "minioadmin",
    "s3.secret_key" = "minioadmin",
    "s3.endpoint" = "http://127.0.0.1:9312",
    "s3.region" = "us-east-1",
    "format" = "csv",
    "use_path_style"="true");

    +------+------+------+
    | c1 | c2 | c3 |
    +------+------+------+
    | 1 | aaa | 18 |
    | 2 | qqq | 20 |
    | 3 | qwe | 19 |
    | 5 | cyx | 19 |
    | 6 | ftw | 21 |
    +------+------+------+
  • S3 TVF를 insert into 및 cast와 함께 사용

    -- Create Doris internal table
    CREATE TABLE IF NOT EXISTS ${testTable}
    (
    id int,
    name varchar(50),
    age int
    )
    COMMENT "my first table"
    DISTRIBUTED BY HASH(id) BUCKETS 32
    PROPERTIES("replication_num" = "1");

    -- Insert data using S3
    insert into ${testTable} (id,name,age)
    select cast (id as INT) as id, name, cast (age as INT) as age
    from s3(
    "uri" = "${uri}",
    "s3.access_key"= "${ak}",
    "s3.secret_key" = "${sk}",
    "s3.endpoint" = "http://127.0.0.1:9312",
    "s3.region" = "us-east-1",
    "format" = "${format}",
    "strip_outer_array" = "true",
    "read_json_by_line" = "true",
    "use_path_style" = "true");