取込み関数
Adp.Ingest
クラスは、様々なソースから表およびビューにデータをロードするために使用されます。
Autonomous Database Load Data API for Pythonでは、次の操作が可能です:
- データベース・リンクから現在のスキーマの表またはビューへの表のコピー
- クラウド・ストレージ・リンクから現在のスキーマの表または外部表へのオブジェクトのコピー
- jsonからのデータを含む表の作成
これらの操作により、対応する取込みジョブが作成されます
データベース・リンク操作
データベース・リンク関数は、データベース・リンクに対するアプリケーション・プログラミング・インタフェースのクラス、メソッド、属性およびパラメータの構文と説明を提供します。
コンシューマ・グループの取得プロシージャ
この関数は、SQLまたはPL/SQLコードを実行するコンシューマ・グループのリストを受け取ります。値は、データベースへの接続時に使用可能なデータベース・サービスと一致します。この機能は、CS_SESSION
パッケージに対するEXECUTE
権限を持っている場合にのみ使用できます。
構文
Ingest.get_consumer_groups()
例
この例では、コンシューマ・グループのリストを取得します:
adp.Ingest.get_consumer_groups() //Output:['LOW', 'MEDIUM', 'HIGH']
データベース・リンクの取得プロシージャ
使用可能なデータベース・リンクのリストを返します(データベース・リンクを作成するには、『Oracle® Databaseデータベース管理者ガイド21c』の「データベース・リンク」を参照してください)。
Ingest.get_database_links(owner)
- 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)
パラメータ:
- tables: 表の説明の配列。各説明には、4つのフィールドがあります。
- owner: このフィールドは、データベース・リンクの所有者を示します。このフィールドがない場合、現在のスキーマ所有者が使用されます。
- 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)
- tables: 表の説明の配列。各説明には、4つのフィールドがあります
- owner: このフィールドは、データベース・リンクの所有者を示します。このフィールドがない場合、現在のスキーマ所有者が使用されます。
- 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'}
]
クラウド・ストレージ・リンク操作
クラウド・ストレージ・リンク関数は、Data Studioツール・スイートのクラウド・ストレージ・リンク・ツールに対するアプリケーション・プログラミング・インタフェースのクラス、メソッド、属性およびパラメータの構文と説明を提供します。
これらのメソッドでは、資格証明およびクラウド・ストレージ・リンクの管理、および現在のスキーマの表または外部表へのクラウド・オブジェクトのインポートが可能です。
資格証明リストの取得プロシージャ
使用可能な資格証明のリストを返します
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キー・ペアの秘密キー。秘密キーは複数の行にまたがります。すべての改行文字をスペース文字で置き換え、その結果のキーを使用してください。
- fingerprint: OCIへのアクセスに使用しているRSAキー・ペアのフィンガープリント。「REST APIを使用した資格証明の作成」を参照してください。
例
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)
パラメータ:
- 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オブジェクトのネーミング規則に準拠している必要があります。
- description: リンクの説明。descriptionがない場合、かわりに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: クラウド・ストレージ・リンクの名前。
- owner: このフィールドは、データベース・リンクの所有者を示します。このフィールドがない場合、現在のスキーマ所有者が使用されます。
例
この例では、'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"
}
},...
]
}
使用可能なコンシューマ・グループのリストが返されます。
クラウド・オブジェクトのコピー・プロシージャ
クラウド・ストレージ・リンクから現在のスキーマ内の表にクラウド・オブジェクトをコピーします
Ingest.copy_cloud_objects(objects, consumer_group)
パラメータ:
- objects: 表の説明の配列。各説明には、4つのフィールドがあります。
- storageLink: クラウド・ストレージ・リンクの名前。このフィールドは必須です。
- objectName: クラウド・ストレージ・リンク内のファイルの名前。get_cloud_objectメソッドの結果のnameフィールドを参照してください。このフィールドは必須です。
- targetTableName: ターゲット表の名前。このフィールドがない場合、ファイル名が表名として使用されます。
-
consumer_group: コンシューマ・グループ。デフォルト値はLOWです。
例
この例では、表を作成し、クラウド・ストレージ・リンク内のオブジェクトからデータをロードできます。
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)
パラメータ:
- objects: 表の説明の配列。各説明には、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)
パラメータ:
- tables: 次のフィールドを含むディクショナリのリストです:
- content: データの内容。キーが列名、値が列の値リストであるディクショナリです。
- 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}]