使用 DBMS_CLOUD.EXPORT_DATA 將資料匯出為文字的物件存放區

使用 DBMS_CLOUD.EXPORT_DATA 將資料從 Autonomous Database 以文字形式匯出至雲端物件存放區。文字格式匯出選項為 CSV、JSON 或 XML

將 JSON 資料匯出至雲端物件儲存

顯示透過指定查詢,將 Autonomous Database 中的表格資料匯出至 Cloud Object Storage 作為 JSON 資料的步驟。

此匯出方法支援 Autonomous Database 支援的所有雲端物件存放區,您可以使用 Oracle Cloud Infrastructure 資源主體存取您的 Oracle Cloud Infrastructure 物件存放區、Amazon 資源名稱 (ARN) 以存取 AWS 簡單儲存服務 (S3)、存取 Azure BLOB 儲存的 Azure 服務主體,或存取 Google 服務帳戶以存取 Google Cloud Platform (GCP) 資源。

  1. 連線到您的 Autonomous Database 執行處理。

    如需詳細資訊,請參閱連線至 Autonomous Database

  2. 使用 DBMS_CLOUD.CREATE_CREDENTIAL 儲存您的雲端物件儲存證明資料。

    舉例而言:

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
        username => 'user1@example.com',
        password => 'password'
      );
    END;
    /

    您為 usernamepassword 提供的值取決於您使用的雲端物件儲存服務。

  3. 執行 DBMS_CLOUD.EXPORT_DATA 並以 json 值指定 format 參數 type,以將結果匯出為雲端物件儲存上的 JSON 檔案。
    若要產生 JSON 輸出檔案,file_uri_list 參數有兩個選項:
    • file_uri_list 值設為雲端物件儲存上現有儲存桶的 URL。

    • file_uri_list 值設為雲端物件儲存上現有儲存桶的 URL,並包含產生匯出 JSON 檔案名稱時要使用的檔案名稱前置碼。

    如果您未在 file_uri_list 中包含檔案名稱首碼,DBMS_CLOUD.EXPORT_DATA 會提供檔案名稱首碼。請參閱文字輸出的檔案命名 (CSV、JSON、Parquet 或 XML) 瞭解詳細資訊。

    例如,下列顯示 DBMS_CLOUD.EXPORT_DATA ,其中包含 file_uri_list 中指定的檔案名稱首碼:

    BEGIN
      DBMS_CLOUD.EXPORT_DATA(
        credential_name => 'DEF_CRED_NAME',
        file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/dept_export',
        query           => 'SELECT * FROM DEPT',
        format          => JSON_OBJECT('type' value 'json'));
    END;
    /

    在此範例中,namespace-string 是 Oracle Cloud Infrastructure 物件儲存命名空間,bucketname 是儲存桶名稱。請參閱瞭解 Object Storage 命名空間瞭解詳細資訊。

    當記錄分隔符號包含逸出字元 (例如 \r\n 或 \t) 時,請以雙引號括住記錄分隔符號。例如,若要使用記錄分隔符號 \r\n,請以雙引號括住值:"\r\n"

    BEGIN
      DBMS_CLOUD.EXPORT_DATA(
        credential_name => 'DEF_CRED_NAME',
        file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/dept_export',
        query => 'SELECT * FROM DEPT',
        format => JSON_OBJECT('type' value 'json', 'recorddelimiter' value '"\r\n"' format json));
    END;
    /

    在此範例中,namespace-string 是 Oracle Cloud Infrastructure 物件儲存命名空間,bucketname 是儲存桶名稱。請參閱瞭解 Object Storage 命名空間瞭解詳細資訊。

    如需有關參數的詳細資訊,請參閱 EXPORT_DATA 程序

    如需可與 DBMS_CLOUD.EXPORT_DATA 搭配使用之可用 format 參數的詳細資訊,請參閱 EXPORT_DATA 的 DBMS_CLOUD Package Format Options

使用 DBMS_CLOUD.EXPORT_DATA 進行匯出的注意事項:

  • 如有需要,您可以提供的 query 參數可以是進階查詢,例如包含結合或子查詢的查詢。

  • compression 選項指定 format 參數以壓縮輸出檔案。

  • 當您不再需要匯出的檔案時,請使用 DBMS_CLOUD.DELETE_OBJECT 程序,或使用原生雲端物件儲存命令刪除檔案。

將資料匯出成 CSV 至雲端物件儲存

透過指定查詢,以 CSV 資料形式顯示從 Autonomous Database 將表格資料匯出至雲端物件儲存的步驟。

此匯出方法支援 Autonomous Database 支援的所有雲端物件存放區。您也可以使用 Amazon Resource Names (ARN) 存取 AWS Simple Storage Service (S3)、存取 Azure BLOB 儲存的 Azure 服務委派人,或使用 Google 服務帳戶存取 Google Cloud Platform (GCP) 資源。

  1. 連線到您的 Autonomous Database 執行處理。

    如需詳細資訊,請參閱連線至 Autonomous Database

  2. 使用 DBMS_CLOUD.CREATE_CREDENTIAL 儲存您的雲端物件儲存證明資料。

    舉例而言:

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
        username => 'user1@example.com',
        password => 'password'
      );
    END;
    /

    您為 usernamepassword 提供的值取決於您使用的雲端物件儲存服務。

  3. 執行 DBMS_CLOUD.EXPORT_DATA 並使用值 csv 指定 format 參數 type,以將結果匯出為雲端物件儲存上的 CSV 檔案。
    若要產生 CSV 輸出檔案,file_uri_list 參數有兩個選項:
    • file_uri_list 值設為雲端物件儲存上現有儲存桶的 URL。

    • file_uri_list 值設為雲端物件儲存上現有儲存桶的 URL,並包含產生所匯出 CSV 檔案檔案名稱時要使用的檔案名稱前置碼。

    如果您未在 file_uri_list 中包含檔案名稱首碼,DBMS_CLOUD.EXPORT_DATA 會提供檔案名稱首碼。請參閱文字輸出的檔案命名 (CSV、JSON、Parquet 或 XML) 瞭解詳細資訊。

    例如,下列顯示 DBMS_CLOUD.EXPORT_DATA ,其中包含 file_uri_list 中指定的檔案名稱首碼:

    BEGIN
      DBMS_CLOUD.EXPORT_DATA(
        credential_name => 'DEF_CRED_NAME',
        file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/dept_export',
        query           => 'SELECT * FROM DEPT',
        format          => JSON_OBJECT('type' value 'csv', 'delimiter' value '|', 'compression' value 'gzip'));
    END;
    /

    在此範例中,namespace-string 是 Oracle Cloud Infrastructure 物件儲存命名空間,bucketname 是儲存桶名稱。請參閱瞭解 Object Storage 命名空間瞭解詳細資訊。

    如需有關參數的詳細資訊,請參閱 EXPORT_DATA 程序

    如需可與 DBMS_CLOUD.EXPORT_DATA 搭配使用之可用 format 參數的詳細資訊,請參閱 EXPORT_DATA 的 DBMS_CLOUD Package Format Options

使用 DBMS_CLOUD.EXPORT_DATA 進行匯出的注意事項:

  • 如有需要,您可以提供的 query 參數可以是進階查詢,例如包含結合或子查詢的查詢。

  • compression 選項指定 format 參數以壓縮輸出檔案。

  • 當您不再需要匯出的檔案時,請使用 DBMS_CLOUD.DELETE_OBJECT 程序,或使用原生雲端物件儲存命令刪除檔案。

將資料匯出為 Parquet 至雲端物件儲存

顯示透過指定查詢,將 Autonomous Database 中的表格資料匯出至 Cloud Object Storage 作為 Parquet 資料的步驟。

此匯出方法支援 Autonomous Database 支援的所有雲端物件存放區,您可以使用 Oracle Cloud Infrastructure 資源主體存取您的 Oracle Cloud Infrastructure 物件存放區、Amazon 資源名稱 (ARN) 以存取 AWS 簡單儲存服務 (S3)、存取 Azure BLOB 儲存的 Azure 服務主體,或存取 Google 服務帳戶以存取 Google Cloud Platform (GCP) 資源。

  1. 連線到您的 Autonomous Database 執行處理。

    如需詳細資訊,請參閱連線至 Autonomous Database

  2. 使用 DBMS_CLOUD.CREATE_CREDENTIAL 儲存您的雲端物件儲存證明資料。

    舉例而言:

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
        username => 'user1@example.com',
        password => 'password'
      );
    END;
    /

    您為 usernamepassword 提供的值取決於您使用的雲端物件儲存服務。

  3. 執行 DBMS_CLOUD.EXPORT_DATA 並指定值為 parquetformat 參數 type,以將結果匯出為雲端物件儲存上的 parquet 檔案。
    若要產生 parquet 輸出檔案,file_uri_list 參數有兩個選項:
    • file_uri_list 值設為雲端物件儲存上現有儲存桶的 URL。

    • file_uri_list 值設為雲端物件儲存上現有儲存桶的 URL,並包含產生匯出之 parquet 檔案的檔案名稱時要使用的檔案名稱前置碼。

    如果您未在 file_uri_list 中包含檔案名稱首碼,DBMS_CLOUD.EXPORT_DATA 會提供檔案名稱首碼。請參閱文字輸出的檔案命名 (CSV、JSON、Parquet 或 XML) 瞭解詳細資訊。

    例如,下列顯示 DBMS_CLOUD.EXPORT_DATA ,其中包含 file_uri_list 中指定的檔案名稱首碼:

    BEGIN
      DBMS_CLOUD.EXPORT_DATA(
        credential_name => 'DEF_CRED_NAME',
        file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/dept_export',
        query           => 'SELECT * FROM DEPT',
        format          => JSON_OBJECT('type' value 'parquet', 'compression' value 'snappy'));
    END;
    /

    在此範例中,namespace-string 是 Oracle Cloud Infrastructure 物件儲存命名空間,bucketname 是儲存桶名稱。請參閱瞭解 Object Storage 命名空間瞭解詳細資訊。

    如需有關參數的詳細資訊,請參閱 EXPORT_DATA 程序

    如需可與 DBMS_CLOUD.EXPORT_DATA 搭配使用之可用 format 參數的詳細資訊,請參閱 EXPORT_DATA 的 DBMS_CLOUD Package Format Options

使用 DBMS_CLOUD.EXPORT_DATA 進行匯出的注意事項:

  • 如有需要,您可以提供的 query 參數可以是進階查詢,例如包含結合或子查詢的查詢。

  • compression 選項指定 format 參數以壓縮輸出檔案。type parquet 的預設 compressionsnappy

  • 當您不再需要匯出的檔案時,請使用 DBMS_CLOUD.DELETE_OBJECT 程序,或使用原生雲端物件儲存命令刪除檔案。

  • 請參閱 DBMS_CLOUD 將 Oracle 資料類型封裝至 Parquet 對應,瞭解 Oracle 類型與 Parquet 類型對應的詳細資訊。

    不支援下列類型,或限制使用 DBMS_CLOUD.EXPORT_DATA 匯出 Parquet 的支援:

    Oracle 類型 備註

    BFILE

    不支援

    BLOB

    不支援

    DATE

    支援下列限制:DATE 格式僅支援日期、月份及年度。不支援小時、分鐘和秒。

    如需將 DATE 匯出至 Parquet 之 NLS 格式限制的詳細資訊,請參閱 DBMS_CLOUD Package Oracle Data Type to Parquet Mapping

    INTERVAL DAY TO SECOND

    支援且在內部被視為字串

    INTERVAL YEAR TO MONTH

    支援且在內部被視為字串

    LONG

    不支援

    LONG RAW

    不支援

    NUMBER

    支援下列限制:

    • 最小精確度可為 38,小數位數可等於小數位數。
    • 如果未提供資料欄 NUMBER 類型的小數位數和小數位數,預設會使用 38 的小數位數和 20 的小數位數。
    • NUMBER 類型不支援負數比例。

    Object Types

    不支援

    TIMESTAMP

    支援下列限制:

    • 如果有多個資料欄的精確度不同,將會採用最高的精確度。
    • TIMESTAMP WITH TIME ZONE Oracle 資料類型只會使用時戳。

    如需將 TIMESTAMP 匯出至 Parquet 之 NLS 格式限制的詳細資訊,請參閱 DBMS_CLOUD Package Oracle Data Type to Parquet Mapping

將資料匯出為 XML 至雲端物件儲存

顯示透過指定查詢,將 Autonomous Database 中的表格資料匯出至 Cloud Object Storage 作為 XML 資料的步驟。

此匯出方法支援 Autonomous Database 支援的所有雲端物件存放區。您也可以使用 Amazon Resource Names (ARN) 存取 AWS Simple Storage Service (S3)、存取 Azure BLOB 儲存的 Azure 服務委派人,或使用 Google 服務帳戶存取 Google Cloud Platform (GCP) 資源。

  1. 連線到您的 Autonomous Database 執行處理。

    如需詳細資訊,請參閱連線至 Autonomous Database

  2. 使用 DBMS_CLOUD.CREATE_CREDENTIAL 儲存您的雲端物件儲存證明資料。

    舉例而言:

    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'DEF_CRED_NAME',
        username => 'user1@example.com',
        password => 'password'
      );
    END;
    /

    您為 usernamepassword 提供的值取決於您使用的雲端物件儲存服務。

  3. 執行 DBMS_CLOUD.EXPORT_DATA 並以 xml 值指定 format 參數 type,以將結果匯出為雲端物件儲存上的 XML 檔案。
    若要產生 XML 輸出檔案,file_uri_list 參數有兩個選項:
    • file_uri_list 值設為雲端物件儲存上現有儲存桶的 URL。

    • file_uri_list 值設為雲端物件儲存上現有儲存桶的 URL,並包含產生匯出 JSON 檔案名稱時要使用的檔案名稱前置碼。

    如果您未在 file_uri_list 中包含檔案名稱首碼,DBMS_CLOUD.EXPORT_DATA 會提供檔案名稱首碼。請參閱文字輸出的檔案命名 (CSV、JSON、Parquet 或 XML) 瞭解詳細資訊。

    例如,下列顯示 DBMS_CLOUD.EXPORT_DATA ,其中包含 file_uri_list 中指定的檔案名稱首碼:

    BEGIN
      DBMS_CLOUD.EXPORT_DATA(
        credential_name => 'DEF_CRED_NAME',
        file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/dept_export',
        query           => 'SELECT * FROM DEPT',
        format          => JSON_OBJECT('type' value 'xml', 'compression' value 'gzip'));
    END;
    /

    在此範例中,namespace-string 是 Oracle Cloud Infrastructure 物件儲存命名空間,bucketname 是儲存桶名稱。請參閱瞭解 Object Storage 命名空間瞭解詳細資訊。

    如需有關參數的詳細資訊,請參閱 EXPORT_DATA 程序

    如需可與 DBMS_CLOUD.EXPORT_DATA 搭配使用之可用 format 參數的詳細資訊,請參閱 EXPORT_DATA 的 DBMS_CLOUD Package Format Options

使用 DBMS_CLOUD.EXPORT_DATA 進行匯出的注意事項:

  • 如有需要,您可以提供的 query 參數可以是進階查詢,例如包含結合或子查詢的查詢。

  • compression 選項指定 format 參數以壓縮輸出檔案。

  • 當您不再需要匯出的檔案時,請使用 DBMS_CLOUD.DELETE_OBJECT 程序,或使用原生雲端物件儲存命令刪除檔案。

文字輸出的檔案命名 ( CSV、JSON、Parquet 或 XML)

說明使用 DBMS_CLOUD.EXPORT_DATA 搭配 CSV、JSON、Parquet 或 XML 文字檔輸出的輸出檔案命名。

DBMS_CLOUD.EXPORT_DATA 會執行使用 query 參數指定的查詢,並將結果傳送至雲端物件存放區儲存桶或目錄中的文字檔。輸出格式取決於您指定的 format 參數 type ( CSV、JSON、Parquet 或 XML 其中之一)。

為了加速程序並盡快產生輸出,DBMS_CLOUD.EXPORT_DATA 會分割程序。這表示視系統資源而定,當您執行 DBMS_CLOUD.EXPORT_DATA 時,程序會在「雲端物件存放區」儲存桶或目錄中建立多個輸出檔案。

每個產生的檔案的格式為:

[FileNamePrefix | client_info_module_action]_sequenceNum_timestamp.format_extension.[compression_extension]

  • FileNamePrefix :(選擇性) 如果提供 FileNamePrefixDBMS_CLOUD.EXPORT_DATA 會使用檔案名稱首碼來產生結果的檔案名稱。FileNamePrefix 是使用在 file_uri_list 參數值中儲存設定 (Bucket) 或目錄名稱之後提供的文字來指定。

    您無法為 file_uri_list 中的 FileNamePrefix 提供多個值。

  • client_info _ module _ action :如果 file_uri_list 參數未提供檔案名稱前置碼,則 DBMS_CLOUD.EXPORT_DATA 會使用 client_info 、應用程式 moduleaction 的組合作為檔案名稱前置碼 (當此資訊可用時)。程序會從執行查詢之資料庫階段作業的應用程式資訊取得這些名稱。請參閱 Oracle Database 19c PL/SQL Packages and Types Reference 中的 DBMS_APPLICATION_INFOOracle Database 23ai PL/SQL Packages and Types Reference ,瞭解 client_infomodule 名稱和動作名稱的相關資訊。

    如果 file_uri_list 未提供檔案名稱前置碼,而且沒有可用的資料庫階段作業屬性,DBMS_CLOUD.EXPORT_DATA 會使用檔案名稱前置碼 "data"。

  • sequenceNum :與 DBMS_CLOUD.EXPORT_DATA 查詢相關聯的序號。視查詢而定,資料庫服務以及 ECPU (如果您的資料庫使用 OCPU,則為 OCPU) 數目有一或多個 sequenceNum 。此外,視結果大小而定,每個 sequenceNum 都會有一或多個輸出檔案。

  • timestamp :上傳檔案時的時戳。

  • format_extension :預設值取決於 format type 值:

    • CSV 格式:.csv
    • JSON 格式:.json
    • PARQUET 格式 .parquet
    • XML 格式:.xml

    如需詳細資訊,請參閱 EXPORT_DATA 的 DBMS_CLOUD 套裝軟體格式選項format 選項 fileextension 的說明。

  • compression_extension :當您將 format 參數與 compression 選項搭配值 gzip 時,這是 "gz"

    format typeparquet 時,也支援 compressionsnappy,此為預設值。

例如,下列 DBMS_CLOUD.EXPORT_DATA 程序中的檔案名稱前置碼在 file_uri_list 參數中指定為 dept_export。此範例會以指定的格式產生所提供物件存放區的輸出。

BEGIN
  DBMS_CLOUD.EXPORT_DATA(
    credential_name => 'DEF_CRED_NAME',
    file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/dept_export',
    query           => 'SELECT * FROM DEPT',
    format          => JSON_OBJECT('type' value 'json'));
END;
/

當您指定檔案名稱前置碼時,產生的輸出檔會包含檔案名稱前置碼,類似於下列項目:

dept_export_1_20210809T173033Z.json
dept_export_2_20210809T173034Z.json
dept_export_3_20210809T173041Z.json
dept_export_4_20210809T173035Z.json

產生的輸出檔案數目取決於 Autonomous Database 執行處理中的結果大小、資料庫服務以及 ECPU (OCPU,如果您的資料庫使用 OCPU) 數目。

在下列範例中,file_uri_list 參數不包含檔案名稱前置碼,且提供值為 gzipcompression 參數:

BEGIN
  DBMS_CLOUD.EXPORT_DATA(
    credential_name => 'DEF_CRED_NAME',
    file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/',
    query           => 'SELECT * FROM DEPT',
    format          => json_object('type' value 'json', 'compression' value 'gzip'));
END;
/

當檔案名稱首碼不在 file_uri_list 參數中時,DBMS_CLOUD.EXPORT_DATA 會使用下列格式的檔案名稱首碼:client_info _ module _ action 。在此範例中,產生的輸出檔案包含 DBMS_CLOUD.EXPORT_DATA 提供的檔案名稱前置碼,並使用 gzip 壓縮檔案,並新增副檔名 .gz,如下所示:

Client1_Module1_Action1_1_20210809T173033Z.json.gz
Client1_Module1_Action1_2_20210809T173034Z.json.gz
Client1_Module1_Action1_3_20210809T173041Z.json.gz
Client1_Module1_Action1_4_20210809T173035Z.json.gz

當您執行 DBMS_CLOUD.EXPORT_DATA 時,如果 client_info _ module _ action 階段作業資訊無法使用,檔案名稱前置碼會設為 data。舉例而言:

data_1_20210809T173033Z.json.gz
data_2_20210809T173034Z.json.gz
data_3_20210809T173041Z.json.gz
data_4_20210809T173035Z.json.gz

例如,下列 DBMS_CLOUD.EXPORT_DATA 程序中的檔案名稱前置碼在 file_uri_list 參數中指定為 dept_export。此範例會以指定的格式產生提供之目錄的輸出。

BEGIN
  DBMS_CLOUD.EXPORT_DATA(
    file_uri_list   => 'DATA_PUMP_DIR:sales.json',
    query           => 'SELECT * FROM SALES',
    format          => JSON_OBJECT('type' value 'json'));
END;
/

當您指定檔案名稱前置碼時,產生的輸出檔會包含檔案名稱前置碼,類似於下列項目:

sales_1_20230705T124523275915Z.csv

使用 DBMS_CLOUD.EXPORT_DATA 命名檔案時的備註:

  • DBMS_CLOUD.EXPORT_DATA 不會建立儲存桶或目錄。

  • DBMS_CLOUD.EXPORT_DATA 產生的檔案數目取決於 ECPU (OCPU,如果您的資料庫使用 OCPU) 的數目、資料庫服務以及結果資料的大小。

  • file_uri_list 參數中提供目錄物件名稱時,適用下列項目:

    • 提供的目錄必須存在,而且您必須具備該目錄的 WRITE 存取權。

    • 以雙引號括住時,目錄名稱會區分大小寫。

    • 不能提供證明資料名稱參數。

  • 對於 CSV、JSON 或 XML 輸出,在產生的檔案包含 10MB 的資料時,預設會建立新的輸出檔案。不過,如果結果資料少於 10MB,您可能會有多個輸出檔案,視資料庫服務和 Autonomous Database 執行處理的 ECPU 數目而定 (如果您的資料庫使用 OCPU,則為 OCPU)。

    CSV、JSON 或 XML 的預設輸出檔案區塊大小為 10MB。您可以使用 format 參數 maxfilesize 選項來變更此值。如需詳細資訊,請參閱 EXPORT_DATA 的 DBMS_CLOUD 套件格式選項

  • 對於 Parquet 輸出,每個產生的檔案小於 128MB,可能會產生多個輸出檔案。不過,如果結果資料少於 128MB,則視資料庫服務和 Autonomous Database 執行處理的 ECPU 數目而定,您可能會有多個輸出檔案 (如果資料庫使用 OCPU,則為 OCPU)。

    format 參數 maxfilesize 選項不適用於 Parquet 檔案。