Db2 Warehouse on Cloud에서 ICOS의 CSV에서 외부 테이블 작성
다음과 같은 이점을 고려할 수 있습니다.
1. ICOS의 Bucket 제작
ICOS 관리 화면에서 세그먼트를 작성합니다.
사용자 정의 작성.
세그먼트 이름으로 만듭니다.
제작된 통에 CSV 파일을 업로드합니다.
CSV 파일은 다음과 같습니다.열 제목과 쉼표 구분자가 있습니다.
20210101sensor.csv
DATE,M_CD,POWER,TEMP,ERR_CD
2021-01-01,104,1003,244,0
2021-01-01,111,1071,254,0
2021-01-01,127,1050,244,0
2021-01-01,143,1088,244,0
2. 서비스 자격 정보 제작아래 매뉴얼을 참고하여 서비스 자격 정보를 작성합니다.
다음을 설정합니다.
Db2WHOC의 외부 테이블 접근에서 HMAC 인증을 하기 때문에 HMAC를 사용해야 합니다.
이름: 임의의 이름
역할: 라이터
서비스 ID: 새 서비스 ID 선택
새 서비스 ID 이름: 임의의 이름
HMAC 인증 정보: ON
CREATE EXTERNAL TABLE 문 설명서에는 다음과 같은 내용이 적혀 있다.
참고: IBM Cloud Object Storage의 경우 HMAC 자격 정보를 만들려면 새 서비스 자격 정보를 만들 때 "내부 구성 매개 변수 추가"필드에 {"HMAC: 참}"을 지정하십시오.
나는 제작된 서비스 자격 정보를 잘 복사할 것이다.
access_key_id 및 시크릿access_외부 테이블을 만들 때 키를 사용합니다.
CREATE EXTERNAL TABLE 문 설명서에는 다음과 같은 내용이 적혀 있다.
구문:
S3 (endpoint, authKey1, authKey2, bucket)
authKey1
IBM Cloud Object Storage의 경우 HMAC 인증 정보에 대한 액세스 키 ID입니다.
authKey2
IBM Cloud Object Storage의 경우 HMAC 자격 정보에 대한 비밀 액세스 키입니다.
3. 서비스 ID의 정의
다음 설명서를 참조하여 서비스 자격 정보를 작성할 때 작성되는 서비스 ID를 해당 Bucket으로 제한하여 액세스를 제한하는 설정을 설정합니다.
먼저 관리에서 액세스 관리(IAM) 메뉴를 엽니다.
서비스 ID 일람에서 방금 작성한 서비스 ID를 찾아 클릭하세요.
방문 정책에서 방금 한 라이터의 역할을 클릭하십시오.
다음 설정을 추가합니다.
자원 유형
자원 ID의 bucket 이름(예: sensorcsv)
.이렇게 하면 이 서비스 ID는 이 buckt에만 접근할 수 있습니다.
CSV 파일을 읽을 수 있도록 Object Reader의 서비스 액세스 권한을 확인합니다.
이번에는 CSV 데이터를 읽는 것만 생각했지만 오류가 발생했을 때 로그를 쓸 수 있는 권한이 필요하기 때문에 쓸 수 있는 권한이 있습니다.(LOGDIR도 잘 떼어낼 수 있다)
CREATE EXTERNAL TABLE 문 설명서에는 다음과 같은 내용이 적혀 있다.
필요한 권한:
외부 테이블이 명명된 외부 테이블인 경우 소유자는 해당 파일에 대한 읽기 및 LOGDIR 디렉토리에 대한 쓰기 권한을 가져야 합니다.
외부 테이블이 임시 외부 테이블인 경우 문에서는 ID가 파일에 대한 읽기 및 LOGDIR 디렉토리에 대한 쓰기 권한을 가져야 합니다.
업데이트는 다음과 같습니다.
4. Db2WHOC의 외부 테이블 제작
다음 설명서를 참조하여 Db2WHOC를 통해 외부 테이블을 작성하십시오.
S3 호환 객체 저장소에 소스 데이터 파일을 지정합니다.파일 이름을 지정하려면 DATAOBJECT 옵션을 사용합니다.
構文:
S3 (endpoint, authKey1, authKey2, bucket)
endpointS3 호환 웹 서비스의 URL에 대한 문자열을 지정합니다.
ICOS의 끝점은 아래에 쓰여 있습니다.
https://cloud.ibm.com/docs/cloud-object-storage?topic=cloud-object-storage-endpoints&locale=ja
예를 들어 개인 AP 일본의 지역 단점을 사용했다.
authKey1:
사용자 및 모든 사용자 작업을 검증하는 액세스 키의 S3 액세스 키 ID를 지정하는 문자열입니다.IBM Cloud Object Storage의 경우 HMAC 인증 정보에 대한 액세스 키 ID입니다.
authKey2:
사용자 및 모든 사용자 동작을 검증하는 액세스 키에 대한 S3 개인 키의 문자열을 지정합니다.IBM Cloud Object Storage의 경우 HMAC 자격 정보에 대한 비밀 액세스 키입니다.
bucket
파일이 들어 있는 S3 섹션의 이름입니다.(예: sensorcsv)
그리고 여기 있습니다.
DELIMITER에서 쉼표 구분자 지정하기
SKIPROWS1에서 머리글 행 무시를 지정합니다.
다음은 SQL 문입니다.
CREATE EXTERNAL TABLE SENSOR_20210101("DATE" DATE,M_CD SMALLINT,POWER SMALLINT,TEMP SMALLINT,ERR_CD SMALLINT) using
(dataobject '20210101sensor.csv'
s3('s3.private.jp-tok.cloud-object-storage.appdomain.cloud',
'86xxxxxxxxxxxxxxxxxxxxxxx',
'bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'sensorcsv'
) DELIMITER ',' SKIPROWS 1
)
다음 표와 같이 SELECT를 수행할 수 있습니다.5. 문제 판단의 힌트
나는 아래의 오류를 만났기 때문에 참고로 써 놓았다.
Reference
이 문제에 관하여(Db2 Warehouse on Cloud에서 ICOS의 CSV에서 외부 테이블 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kawada2017/items/8a0bbddd10aba11efec3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)