수집 함수
Adp.Ingest 클래스는 다양한 소스의 데이터를 테이블 및 뷰로 로드하는 데 사용됩니다.
Autonomous Database Load Data API for Python은 다음과 같은 작업을 허용합니다.
- Database Link의 테이블을 현재 스키마의 테이블 또는 뷰로 복사합니다.
- 클라우드 저장 영역 링크에서 현재 스키마의 테이블 또는 외부 테이블로 객체 복사
- JSON의 데이터로 테이블 생성
이러한 작업은 해당하는 수집 작업을 생성합니다.
데이터베이스 링크 작업
데이터베이스 링크 함수는 데이터베이스 링크에 대한 응용 프로그램 프로그래밍 인터페이스의 클래스, 메소드, 속성 및 매개변수에 대한 구문과 설명을 제공합니다.
소비자 그룹 가져오기 프로시저
이 함수는 SQL 또는 PL/SQL 코드를 실행할 소비자 그룹 목록을 수신합니다. 값은 데이터베이스에 연결할 때 사용 가능한 데이터베이스 서비스와 일치합니다. 이 기능은 CS_SESSION 패키지에 대한 EXECUTE 권한이 있는 경우에만 사용할 수 있습니다.
구문
Ingest.get_consumer_groups()예
이 예제에서는 Consumer Group 리스트를 표시합니다.
adp.Ingest.get_consumer_groups() //Output:['LOW', 'MEDIUM', 'HIGH']
데이터베이스 링크 가져오기 프로시저
사용 가능한 데이터베이스 링크 목록을 반환합니다. 데이터베이스 링크를 생성하려면 "Oracle® Database Database Administrator's Guide 21c"의 데이터베이스 링크데이터베이스 링크를 참조하십시오.
Ingest.get_database_links(owner)- 소유자: 이 필드에는 데이터베이스 링크의 소유자가 표시됩니다. 이 필드가 누락된 경우 도구는 현재 스키마 소유자를 사용합니다.
예
adp.Ingest.get_database_links()
//Output
{"nodes":
[
{"label":"***********_*********_SH.REGRESS.RDBMS.DEV.US.ORACLE.COM",
"type":"DB_LINK",
"id":"\"ADPTEST\".\"DB_LINK\".\"***********_*********_SH.REGRESS.RDBMS.DEV.US.ORACLE.COM\"",
"data":{
"name":"********_*******_SH.REGRESS.RDBMS.DEV.US.ORACLE.COM",
"namespace":"DB_LINK",
"path":"\"DB_LINK\".\"*************_********_SH.REGRESS.RDBMS.DEV.US.ORACLE.COM\"",
"schema":"ADPTEST",
"application":"DATABASE",
"created":"2024-05-02T08:30:15Z",
"updated":"2024-05-02T08:30:15Z"
}
}
],"links":[]}데이터베이스 링크 프로시저에서 테이블 가져오기
데이터베이스 링크에서 테이블 및 뷰 목록을 반환합니다.
Ingest.get_db_link_owner_tables(db_link)매개변수:
- db_link: 데이터베이스 링크의 이름입니다.
예
이 예제에서는 지정된 데이터베이스 링크에 있는 객체 목록을 가져옵니다.
adp.Ingest.get_db_link_owner_tables("**************_********_SH.REGRESS.RDBMS.DEV.US.ORACLE.COM")
//Output
[
"APEX_DG_DATASET_ROWS": {
"dbLink": "**************_********_SH.REGRESS.RDBMS.DEV.US.ORACLE.COM",
"owner": "APEX_230200",
"tableName": "APEX_DG_DATASET_ROWS",
"numRows": 3,
"avgRowLen": 54
},...
]데이터베이스 링크 프로시저에서 테이블 복사
지정된 테이블에서 현재 데이터베이스로 테이블을 생성합니다.
구문
Ingest.copy_tables_from_db_link(tables, consumer_group)매개변수:
- 테이블: 테이블 설명의 배열입니다. 각 설명에는 4개의 필드가 있습니다.
- 소유자: 이 필드에는 데이터베이스 링크의 소유자가 표시됩니다. 이 필드가 누락된 경우 도구는 현재 스키마 소유자를 사용합니다.
- table_name: 데이터베이스 링크에 있는 테이블의 이름입니다. 필수 사항입니다.
- db_link: 데이터베이스 링크의 이름입니다. 필수 사항입니다.
- target_table_name: 대상 테이블의 이름입니다. 이 필드가 누락된 경우 도구는 소스 테이블 이름을 사용합니다.
- consumer_group: 소비자 그룹입니다. 기본값은 "LOW"입니다.
예제
이 예제에서는 데이터베이스 링크의 테이블을 기반으로 테이블을 생성할 수 있습니다.
adp.Ingest.copy_tables_from_db_link([{'owner':'SH', 'tableName':'PRODUCTS', 'dbLink':'PHOENIX119757_ORDS_SH.REGRESS.RDBMS.DEV.US.ORACLE.COM','targetTableName': 'PRODUCT'}], 'HIGH')
//Output
[
{
'schema': 'SH',
'tableName': 'PRODUCTS',
'targetTableName': 'PRODUCTS',
'name': '***********_***********_SH.REGRESS.RDBMS.DEV.US.ORACLE.COM',
'rowsCopied': 766
}
]이 메소드는 생성한 테이블 리스트를 반환합니다. 출력의 딕셔너리는 입력 매개변수와 동일하며 추가 값이 삽입된 행 수입니다.
데이터베이스 링크 프로시저에서 테이블 링크
지정된 테이블에서 현재 데이터베이스로 뷰를 생성합니다. 결과 문자열에 행 수가 없다는 점을 고려하십시오.
Ingest.link_tables_from_db_link(tables, consumer_group)- 테이블: 테이블 설명의 배열입니다. 각 설명에는 4개의 필드가 있습니다.
- 소유자: 이 필드에는 데이터베이스 링크의 소유자가 표시됩니다. 이 필드가 누락된 경우 도구는 현재 스키마 소유자를 사용합니다.
- table_name: 데이터베이스 링크에 있는 테이블의 이름입니다. 필수 사항입니다.
- db_link: 데이터베이스 링크의 이름입니다. 필수 사항입니다.
- target_table_name: 대상 테이블의 이름입니다. 이 필드가 누락된 경우 도구는 소스 테이블 이름을 사용합니다.
-
consumer_group: 소비자 그룹입니다. 기본값은 "LOW"입니다.
예
이 예제에서는 데이터베이스 링크의 테이블을 기반으로 테이블을 생성할 수 있습니다.
adp.Ingest.link_tables_from_db_link([{'owner':'SH', 'tableName':'PROMOTIONS', 'dbLink':'**************_********_SH.REGRESS.RDBMS.DEV.US.ORACLE.COM', 'targetTableName': 'PROMOTIONS'}},'HIGH')
//Output
[
{
'schema': 'SH',
'tableName': 'PROMOTIONS',
'targetTableName': 'PROMOTIONS',
'name': '**************_********_SH.REGRESS.RDBMS.DEV.US.ORACLE.COM'}
]클라우드 저장 영역 링크 작업
Cloud Storage Link 함수는 애플리케이션 프로그래밍 인터페이스의 클래스, 메소드, 속성 및 매개변수에 대한 구문과 설명을 Data Studio 도구 모음의 Cloud Storage Link 도구에 제공합니다.
이러한 방법을 사용하면 인증서 및 클라우드 저장 영역 링크를 관리하고 현재 스키마의 테이블 또는 외부 테이블로 클라우드 객체를 임포트할 수 있습니다.
인증서 목록 가져오기 프로시저
사용 가능한 인증서 목록 반환
Ingest.get_credential_list()위 함수는 인증서 목록을 반환합니다.
예
이 예에서는 모든 인증서를 가져올 수 있습니다.
adp.Ingest.get_credential_list()
{
"items": [
{
"credential_name": "PROVIDER_DEMO_DELTA_SHARING_111$SHARE_CRED",
"username": "BEARER_TOKEN",
"windows_domain": null,
"comments": "{\"comments\": \"Created via DBMS_CLOUD.create_credential\",\"user_comments\": \"\"}"
},
...
]
}
인증서 프로시저 생성
단순 인증서를 생성합니다. Microsoft Azure 클라우드의 경우 계정 이름, 암호는 액세스 키, Amazon 사용자의 경우 액세스 키 ID, 암호는 암호 액세스 키, Google 사용자의 경우 HMAC 액세스 키, 암호는 HMAC 액세스 암호입니다.
구문
Ingest.create_credential(credential_name, user, password)매개변수:
- credential_name: 새 인증서의 이름입니다.
- user 및 password는 클라우드 시스템에 종속됩니다. Microsoft Azure 클라우드의 경우 user는 계정 이름이고 password는 액세스 키이며, Amazon의 경우 user는 액세스 키 ID이고, password는 보안 액세스 키이며, Google user는 HMAC 액세스 키이고, password는 HMAC 액세스 암호입니다.
예
이 예에서는 지정된 사용자 및 암호로 인증서를 생성할 수 있습니다.
adp.Ingest.create_credential('TEST", 'ADMIN', 'PASSWORD')OCID 인증서 프로시저 생성
OCI 서명 키를 사용하여 인증서를 생성합니다.
구문
Ingest.create_ocid_credential(credential_name, user_ocid, tenancy_ocid,
private_key, fingerprint)이 함수는 OCI 서명 키를 사용하여 인증서를 생성합니다.
매개변수:
- credential_name: 인증서의 이름입니다.
- user_ocid: 사용자의 OCID입니다.
- tenancy_ocid: 테넌시의 OCID입니다.
- private_key: RSA 키 쌍의 개인 키입니다. 개인 키는 여러 행에 걸쳐 있습니다. 모든 줄바꿈 문자를 공백 문자로 바꾸고 결과 키를 사용해야 합니다.
- 지문: OCI 액세스에 사용 중인 RSA 키 쌍의 지문입니다.
예
adp.Ingest.create_ocid_credential('OCI_NATIVE_CRED', 'ocid1.user.oc1..aaaaaaaatfn77fe3fxux3o5lego7glqjejrzjsqsrs64f4jsjrhbsk5qzndq','ocid1.user.oc1..aaaaaaaatfn77fe3fxux3o5lego7glqjejrzjsqsrs64f4jsjrhbsk5qzndq', 'MIIEogIBAAKCAQEAsbNPOYEkxM5h0DF+qXmie6ddo95BhlSMSIxRRSO1JEMPeSta0C7WEg7g8SOSzhIroCkgOqDzkcyXnk4BlOdn5Wm/BYpdAtTXk0sln2DH...', '4f:0c:d6:b7:f2:43:3c:08:df:62:e3:b2:27:2e:3c:7a')
인증서 삭제 프로시저
지정된 이름의 인증서를 삭제합니다.
Ingest.drop_credential(credential_name)매개변수:
- credential_name: 인증서의 이름입니다.
예
이 예제에서는 이름이 'TEST'인 인증서를 삭제할 수 있습니다.
adp.Ingest.drop_credential('TEST')
클라우드 스토리지 링크 목록 가져오기 절차
구문
Ingest.get_cloud_storage_link_list(owner)매개변수:
- 소유자: 이 필드에는 데이터베이스 링크의 소유자가 표시됩니다. 이 필드가 누락된 경우 도구는 현재 스키마 소유자를 사용합니다.
예
이 예에서는 클라우드 스토리지 링크 목록을 볼 수 있습니다.
Ingest.get_cloud_storage_link_list()
// Output
{
"nodes": [
{
"label": "AA",
"type": "CLOUD_STORAGE_LINK",
"id": "\"ADMIN\".\"STORAGE_LINK\".\"AA\"",
"data": {
"name": "AA",
"entityID": 28897,
"namespace": "STORAGE_LINK",
"path": "\"STORAGE_LINK\".\"AA\"",
"schema": "ADMIN",
"application": "CLOUD",
"created": "2023-01-30T21:42:17Z",
"updated": "2023-01-30T21:42:17Z",
"catalog": "LOCAL"
}
},
...
]
}
클라우드 스토리지 링크 생성 프로시저
클라우드 저장소 URI 및 인증서를 기반으로 클라우드 저장소 링크 프로시저를 생성합니다. 스토리지 링크가 퍼블릭 버킷인 경우 인증서를 건너뛸 수 있습니다.
구문
Ingest.create_cloud_storage_link(storage_link_name, uri, credential_name,
description)매개변수:
- storage_link_name: 클라우드 스토리지 링크의 이름입니다. 필수 사항입니다.
- URI: 파일 이름을 제외한 URL 경로(URI)입니다. 필수 사항입니다.
- credential_name: 자격 증명 이름은 Oracle 객체 이름 지정 규칙을 준수해야 합니다.
- 설명: 링크에 대한 설명입니다. 설명이 누락된 경우 도구는 대신 storage_link_name을 사용합니다.
예
이 예에서는 이름이 'TEST'인 클라우드 스토리지 링크를 생성할 수 있습니다.
Ingest.create_cloud_storage_link('TEST', 'https://.../test-bucket/o/', None, 'OCI Storage Link')
클라우드 저장 영역 링크 삭제 프로시저
스토리지 링크 이름을 기반으로 클라우드 스토리지 링크를 삭제합니다.
Ingest.drop_cloud_storage_link(storage_link_name)매개변수:
- storage_link_name: 클라우드 스토리지 링크의 이름입니다.
예
이 예에서는 이름이 'TEST'인 클라우드 스토리지 링크를 삭제할 수 있습니다.
Ingest.drop_cloud_storage_link('TEST')클라우드 저장 영역 객체 가져오기 프로시저
클라우드 스토리지 링크의 객체 목록을 가져옵니다.
구문
Ingest.get_cloud_objects(storage_link,owner)이 함수는 클라우드 스토리지 링크의 객체 목록을 반환합니다.
매개변수:
- storage_link: 클라우드 스토리지 링크의 이름입니다.
- 소유자: 이 필드에는 데이터베이스 링크의 소유자가 표시됩니다. 이 필드가 누락된 경우 도구는 현재 스키마 소유자를 사용합니다.
예
이 예에서는 이름이 'TEST'인 클라우드 스토리지 링크의 객체를 나열할 수 있습니다.
Ingest.get_cloud_objects('TEST')
// Output
{
"nodes": [
{
"label": "users/1623813236395.parquet",
"type": "CLOUD_OBJECT",
"id": "\"ADMIN\".\"STORAGE_LINK\".\"TEST\".\"OBJECT\".\"users/1623813236395.parquet\"",
"data": {
"name": "users/1623813236395.parquet",
"namespace": "OBJECT",
"path": "\"STORAGE_LINK\".\"TEST\".\"OBJECT\".\"users/1623813236395.parquet\"",
"schema": "ADMIN",
"annotation": {
"bytes": 1835742,
"checksum": "8c215516638037427850b03f0e111850",
"isFolder": false,
"fileName": "1623813236395.parquet",
"uri": "https://.../test-bucket/o/users/1623813236395.parquet"
},
"application": "CLOUD",
"created": "2022-08-02T14:21:26Z",
"updated": "2022-08-02T14:21:26Z",
"catalog": "LOCAL"
}
},...
]
}사용 가능한 Consumer Group 리스트를 반환합니다.
클라우드 객체 복사 프로시저
클라우드 스토리지 링크의 클라우드 객체를 현재 스키마의 테이블로 복사
Ingest.copy_cloud_objects(objects, consumer_group)매개변수:
- 객체: 테이블 설명 배열입니다. 각 설명에는 4개의 필드가 있습니다.
- storageLink: 클라우드 스토리지 링크의 이름입니다. 필수 사항입니다.
- objectName: 클라우드 스토리지 링크에 있는 파일의 이름입니다. get_cloud_object 메소드의 결과는 name 필드를 참조하십시오. 필수 사항입니다.
- targetTableName: 대상 테이블의 이름입니다. 이 필드가 누락된 경우 도구는 파일 이름을 테이블 이름으로 사용합니다.
-
consumer_group: 소비자 그룹입니다. 기본값은 "LOW"입니다.
예
이 예에서는 Cloud Storage Link의 객체에서 테이블을 생성하고 데이터를 로드할 수 있습니다.
adp.Ingest.copy_cloud_objects([{'storageLink': 'TEST', 'objectName': 'users/testData.csv','targetTableName': 'TESTDATA'}, 'HIGH')
output:
[
{
"storageLink": "TEST",
"targetTableName": "TESTDATA",
"objectName": "users/testData.csv",
"rowsCopied": 588
}
]
클라우드 객체 링크 프로시저
클라우드 저장 영역 링크의 클라우드 객체를 기반으로 외부 테이블을 생성합니다.
Ingest.link_cloud_objects(objects, consumer_group)매개변수:
- 객체: 테이블 설명 배열입니다. 각 설명에는 4개의 필드가 있습니다.
- storageLink: 클라우드 스토리지 링크의 이름입니다. 필수 사항입니다.
- objectName: 클라우드 스토리지 링크에 있는 파일의 이름입니다. get_cloud_object 메소드의 결과는 name 필드를 참조하십시오. 필수 사항입니다.
- targetTableName: 대상 테이블의 이름입니다. 이 필드가 누락된 경우 도구는 파일 이름을 테이블 이름으로 사용합니다.
-
consumer_group: 소비자 그룹입니다. 기본값은 "LOW"입니다.
예
adp.Ingest.link_cloud_objects([{'storageLink': 'TEST', 'objectName': 'users/testData.csv','targetTableName': 'TESTDATA'}, 'HIGH')
output:
[
{
"storageLink": "TEST",
"targetTableName": "TESTDATA",
"objectName": "users/testData.csv",
"rowsCopied": 588
}
]JSON 데이터에서 테이블 생성 프로시저
Ingest.load_data(tables)매개변수:
- 테이블은 다음 필드가 포함된 딕셔너리 목록입니다.
- 콘텐츠: 데이터의 콘텐츠이며, 키가 열 이름이고 값이 열 값 목록인 딕셔너리입니다.
- targetTableName: 테이블 이름.
예
content = {
"Year_id":[11,12,13,14,15],
"Year_name": ["CY2011","CY2012","CY2013","CY2014","CY2015"],
"Year_end_date": ["31-DEC-11","31-DEC-12","31-DEC-13","31-DEC-14","31-DEC-15"],
"Quarter_id":[211,212,213,214,215],
"Quarter_name":["Q2CY2011","Q2CY2012","Q2CY2013","Q2CY2014","Q2CY2015"],
"Quarter_end_date":["30-JUN-11","30-JUN-12","30-JUN-13","30-JUN-14","30-JUN-15"]
}
content_list=[{"content": content, "targetTableName": "TestLoad"}]
adp.Ingest.load_data(content_list)
//Output
[{'fileName': 'TESTLOAD', 'targetTableName': 'TESTLOAD', 'rowsCopied': 6}]