取込み関数

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鍵ペアの非公開鍵。秘密鍵は複数の行にまたがります。すべての改行文字をスペース文字で置換し、結果のキーを使用してください。
  • フィンガープリント: 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)

パラメータ:

  • 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: リンクの説明。説明がない場合、ツールは代わりに 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')

クラウド・ストレージ・オブジェクトの取得プロシージャ

Cloud Storage Link内のオブジェクトのリストを取得します。

構文

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}]