DBMS_CLOUD 套件格式選項

DBMS_CLOUD 中的格式引數指定來源檔案的格式。

指定格式引數的兩種方式為:

format => '{"format_option" : “format_value” }'  

且:

format => json_object('format_option' value 'format_value'))

範例:

format => json_object('type' VALUE 'CSV')

若要指定多個格式選項,請使用 "," 分隔值。

舉例而言:

format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true', 
                           'dateformat' value 'YYYY-MM-DD-HH24-MI-SS', 'blankasnull' value 'true', 'logretention' value 7)

附註:

如需 Avro、ORC 或 Parquet 格式選項,請參閱 DBMS_CLOUD Avro、ORC 或 Parquet 的套件格式選項

格式選項資料欄中所述,當 format type 為 JSON 時,有限的一組格式選項對 DBMS_CLOUD.COPY_COLLECTION 有效,或對 DBMS_CLOUD.COPY_DATA 有效。

格式選項 描述 語法

blankasnull

設為 true 時,會載入包含空格的欄位作為空值。

blankasnull : true

預設值:False

characterset

適用於 format JSON 和 COPY_DATA

指定來源檔案的字元集

characterset字串

預設值:資料庫字元集

columnpath

只能與 format JSON 和 COPY_DATA 搭配使用

對應至需要從 JSON 記錄擷取之欄位的 JSON 路徑表示式陣列。陣列中的每個 JSON 路徑表示式都應遵循 Oracle Database 19c JSON Developer's Guide 中的 SQL/JSON Path ExpressionsOracle Database 23ai JSON Developer's Guide 中所述的規則。

只能搭配 JSON 和 DBMS_CLOUD.COPY_DATA 格式使用。

以字串格式表示的 json 路徑表示式 JSON 陣列。例如:'columnpath' value '["$.WEATHER_STATION_ID", "$.WEATHER_STATION_NAME"]'

compression

選項對 JSON 資料有效

指定來源檔案的壓縮類型。

不支援 ZIP 封存格式。

指定值 auto 會檢查壓縮類型:gzip, zlib, std, bzip2

compression: auto|gzip|zlib|bzip2

預設值:空值表示不壓縮。

conversionerrors

資料列若因資料類型轉換錯誤而遭到拒絕, 則會將相關的資料欄儲存為空值或拒絕該資料列.

conversionerrors : reject_record | store_null

預設值:reject_record

dateformat

指定來源檔案中的日期格式。格式選項 AUTO 會搜尋下列格式:

J 
MM-DD-YYYYBC 
MM-DD-YYYY 
YYYYMMDD HHMISS 
YYMMDD HHMISS 
YYYY.DDD 
YYYY-MM-DD

dateformat字串

預設值:資料庫日期格式

delimiter

指定欄位分界字元。

若要使用特殊字元作為分隔符號,請指定字元 ASCII 代碼的 HEX 值。例如,以下指定 TAB 字元作為分隔符號:

format => json_object('delimiter' value 'X''9''')

delimiter字元

預設值 | (管線字元)

detectfieldorder

指定外部資料檔中的欄位順序與表格中的資料欄不同。使用每個外部資料檔的第一個資料列來偵測欄位順序,並將其對應至表格的資料欄。外部資料檔中的欄位名稱會以不區分大小寫的方式與表格資料欄的名稱進行比較。

此格式選項適用於下列程序:

  • DBMS_CLOUD.COPY_DATA

  • DBMS_CLOUD.CREATE_EXTERNAL_TABLE

  • DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE

  • DBMS_CLOUD.CREATE_HYBRID_PART_TABLE

detectfieldorder 的限制:

  • 資料檔中的欄位名稱必須出現在第一行記錄中,且欄位名稱之間不得包含任何空格。

  • 欄位名稱記錄中的欄位分隔符號必須與檔案中資料的欄位分隔符號相同。

  • 不支援引號的欄位名稱。資料檔中的欄位名稱會以不區分大小寫的方式與外部表格資料欄的名稱進行比較。

  • 欄位名稱中不允許使用內嵌欄位分隔符號。

  • 表格中的資料欄數目必須與資料檔中的欄位數目相符。

  • 此格式選項不適用於 Bigdata 或 Oracle Data Pump 格式,因為這些格式具有二進位檔案格式的精確資料欄描述資料資訊。

    當第一行包含欄位名稱時,文字格式、CSV、JSON、Parquet 或 XML 可受惠於此自動現場工單偵測。

請參閱 Oracle Database 19c 公用程式Oracle Database 23ai 公用程式中的 FIELD NAMES ,以及 ALL FILES 的描述以瞭解詳細資訊。

detectfieldorder: true

預設值:false

enablelogs

格式選項 enablelogs 可與下列 DBMS_CLOUD 程序搭配使用:

  • COPY_DATA

  • COPY_COLLECTION

  • EXPORT_DATA

enablelogs 指定布林值,當設為 TRUE 時,便會產生日誌。設為 FALSE 時,不會產生日誌。

舉例而言:

format => JSON_OBJECT('enablelogs' value FALSE)

enablelogs: false

預設值:true

encryption

格式選項 encryption 指定匯出和匯入「物件存放區」資料的加密和解密選項。

使用 encryption 指定要加密和解密的下列參數:

  • user_defined_function:指定完整的使用者定義函數,以解密或加密指定的 BLOB (二進位大型物件)。它會傳回已解密或加密的 BLOB。user_defined_functionencryption 的其他參數互斥。

    例如,ADMIN.DECRYPTION_CALLBACK

  • type:指定要解密或加密的 DBMS_CRYPTO 加密演算法。

    type 接受區塊加密演算法 + 區塊加密鏈結修飾條件 + 區塊加密填補修飾條件格式的值。

    支援的區塊加密演算法包括:

    • DBMS_CRYPTO.ENCRYPT_AES256

    支援的區塊加密鏈結修飾條件為:

    • DBMS_CRYPTO.CHAIN_CBC

    • DBMS_CRYPTO.CHAIN_CFB

    • DBMS_CRYPTO.CHAIN_ECB

    • DBMS_CRYPTO.CHAIN_OFB

    支援的區塊加密填補修飾條件為:

    • DBMS_CRYPTO.PAD_PKCS5

    • DBMS_CRYPTO.PAD_NONE

    • DBMS_CRYPTO.PAD_ZERO

    • DBMS_CRYPTO.PAD_ORCL

  • credential_name:指定用來儲存加密金鑰的證明資料。

如果您未指定這些參數的值,則「區塊加密鏈結修飾條件」和「區塊加密填補修飾條件」值會預設為 DBMS_CRYPTO.CHAIN_CBCDBMS_CRYPTO.PAD_PKCS5

格式選項 encryption 可與下列 DBMS_CLOUD 程序搭配使用:
  • 用來傳送參數以解密下列程序:

    • DBMS_CLOUD.COPY_DATA

    • DBMS_CLOUD.CREATE_EXTERNAL_TABLE

    • DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE

    • DBMS_CLOUD.CREATE_HYBRID_PART_TABLE

      對於 DBMS_CLOUD.CREATE_HYBRID_PART_TABLE,此選項僅適用於物件儲存檔案。

    • DBMS_CLOUD.COPY_COLLECTION

  • 用來傳送要加密下列程序的參數:

    • DBMS_CLOUD.EXPORT_DATA

舉例而言:

format => JSON_OBJECT('encryption' value json_object ('type' value DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5, 'credential_name' value 'ENCRYPTION_CRED'))
encryption:value

其中 value 是提供加密其他參數的 JSON 字串:

type: value

指定加密類型。

credential_name: value

指定用來儲存加密金鑰的證明資料。

user_defined_function: value

指定完整的使用者定義函數,以解密或加密指定的 BLOB (二進位大型物件)。

endquote

可以將資料括在兩個以 quoteendquote 指定的分界字元之間。指定時,會在載入期間移除 quoteendquote 字元。

舉例而言:

format => JSON_OBJECT(‘quote’ value ‘(’, ‘endquote’ value ‘)’)

endquote:character

預設值:空值,表示沒有 endquote

escape

如果指定遁離, 使用 "\" 字元作為遁離字元.

escape : true

預設值:false

ignoreblanklines

選項對 JSON 資料有效

若設為 true,會忽略空白行。

ignoreblanklines : true

預設值:False

ignoremissingcolumns

如果 field_list 中的資料欄數目比來源檔案中的資料欄多,額外的資料欄將會儲存為空值。

ignoremissingcolumns : true

預設值 False

jsonpath

僅與 COPY_COLLECTION 搭配使用

識別要載入之文件的 JSON 路徑。

此選項僅對含 DBMS_CLOUD.COPY_COLLECTION 的 JSON 集合資料有效。

jsonpath字串

預設值:空值

keyassignment

僅與 COPY_COLLECTION 搭配使用

指定新集合是建立為 mongo 相容集合還是 SODA 集合。

當值設為 embedded_oid 時,會建立一個與 mongo 相容的集合。

此參數預設未設定,表示新集合會建立為 SODA 集合。

keyassignment: embedded_oid

預設值:未設定 keyassignment

keypath

僅與 COPY_COLLECTION 搭配使用

指定要載入為 '_id' 值之資料的屬性。

如果指定 keypath,您也必須將 keyassignment 值指定為 embedded_oid

將值設為路徑 (例如 '$.mykey'),以選擇路徑的值作為 '_id' 值。

此為選擇性參數,只適用於載入 mongo 相容集合。

如果未指定,Oracle 會產生 12 位元組的唯一系統 ID,並在載入的資料中還沒有 '_id' 屬性時,將該 ID 植入 '_id' 屬性。

keypath: string

預設值:未設定 keypath

設定 keypath 時,預設的 string 值為 NULL

language

指定語言名稱 (例如 FRENCH),以便衍生地區設定的機密資訊。

language字串

預設值:空值

如需 Oracle 支援語言的清單,請參閱 Oracle Database 19c Database Globalization Support Guide 中的 Locale DataOracle Database 23ai Database Globalization Support Guide

logdir

指定字串值,以決定儲存 logfile_tablebadfile_table 檔案的目錄物件名稱。

依照預設,logdir 不區分大小寫,但當指定的值以雙引號括住時,會保留大小寫。

舉例而言:

format => JSON_OBJECT ('logdir' value 'test_log')

以上範例中指定的 logdir 格式選項會將 logfile_tablebadfile_table 檔案儲存在 TEST_LOG 目錄物件中。

format => JSON_OBJECT ('logdir' value '"test_log"')

以上範例中指定的 logdir 格式選項會將 logfile_tablebadfile_table 檔案儲存在 test_log 目錄物件中。

logdir字串

預設值:DATA_PUMP_DIR

logprefix

指定字串值以決定 logfile_tablebadfile_table 檔案的前置碼。

日誌表格名稱格式為: logprefix$operation_id

依照預設,日誌前置碼為大寫,但當指定的值以雙引號括住時,會保留大小寫。

舉例而言:

format => JSON_OBJECT ('logprefix' value 'TEST')

然後,日誌檔會使用 TEST 前置碼,例如:TEST$2_LOGTEST$2_BAD

logprefix字串

預設值:COPY

logretention

指定保留 logfile_tablebadfile_table 檔案的正整數持續時間 (天)。

有效值:099999

舉例而言:

format => JSON_OBJECT ('logretention' value 7)

logretention數字

預設值:2

maxdocsize

此選項僅適用於 JSON 資料

JSON 文件大小上限。

maxdocsize數字

預設值:1 MB

允許的最大值:2 GB

numericcharacters

指定作為群組區隔符號和小數字元的字元。

decimal_character :小數點會將數字的整數部分與小數部分分隔。

group_separator :群組分隔符號會分隔整數群組 (亦即,千、百萬、十億等等)。

numericcharacters: 'decimal_character group_separator'

預設值:".,"

請參閱 NLS_NUMERIC_CHARACTERS Oracle Database 19c Database Globalization Support Guide Oracle Database 23ai Database Globalization Support Guide 以瞭解詳細資訊。

numberformat

指定數字格式模型。數字格式模型會導致數字四捨五入至指定的有效位數。數字格式模型是由一或多個數字格式元素所組成。

此選項與 numericcharacters 結合使用。

numberformat: number_format_model

預設值:從 NLS_TERRITORY 參數的設定衍生而來

請參閱 Oracle Database 19c SQL Language Reference 中的 Number Format ModelsOracle Database 23ai SQL Language Reference ,瞭解詳細資訊。

partition_columns

格式選項 partition_columns 可與 DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE 搭配使用,在分割區資料欄衍生自檔案路徑時指定資料欄名稱和分割區資料欄的資料類型 (視資料檔類型、結構化或非結構化而定):

  • DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE 包含 column_list 參數且資料檔為非結構化時 (例如使用 CSV 文字檔),partition_columns 不包括資料類型。例如,針對此類型的 partition_columns 規格使用如下的格式:

    '"partition_columns":["state","zipcode"]'

    不需要資料類型,因為它是在 DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE column_list 參數中指定。

  • DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE 不包含 column_list 參數且資料檔結構化時 (例如 Avro、ORC 或 Parquet 檔案),partition_columns 選項會包含資料類型。例如,下列顯示 partition_columns 規格:

    '"partition_columns":[
                   {"name":"country", "type":"varchar2(10)"},
                   {"name":"year", "type":"number"},
                   {"name":"month", "type":"varchar2(10)"}]'

如果資料檔為非結構化且 partition_columns 指定了 type 子子句,則會忽略 type 子句。

對於不是以 hive 格式為基礎的物件名稱,partition_columns 指定資料欄的順序必須與它們在 file_uri_list 的物件名稱中顯示的順序相同。

 

quote

指定欄位的引號字元,如果指定,會在載入時移除 quote 字元。

quote字元

預設值:空值代表沒有引號

recorddelimiter

選項對 JSON 資料有效

指定記錄分界字元。

依照預設,DBMS_CLOUD 會嘗試自動尋找正確的換行字元作為分隔符號。它會先搜尋檔案中的 Windows 新行字元 "\r\n"。如果找到 Windows 換行字元,就會使用此字元作為程序中所有檔案的記錄分隔符號。如果找不到 Windows 換行字元,則會搜尋 UNIX/Linux 換行字元 "\n",如果找到,則會使用 "\n" 作為程序中所有檔案的記錄分隔符號。

如果您要覆寫預設行為,請明確指定此引數,例如:

format => json_object('recorddelimiter' VALUE '''\r\n''')

若要指示沒有記錄分界字元,您可以指定輸入檔案中不會發生的 recorddelimiter。例如,若要指示沒有分界字元,請指定控制項字元 0x01 (SOH) 作為 recorddelimiter 的值,並將 recorddelimiter 值設為 "0x''01''" (JSON 文字中不會出現此字元)。舉例而言:

format => '{"recorddelimiter" : "0x''01''"}'

每個程序呼叫都會設定一次 recorddelimiter。如果您使用預設值 detected newline,則所有檔案都使用相同的記錄分隔符號 (如果偵測到的話)。

recorddelimiter字元

預設值:偵測到換行

regexuri

格式選項 regexuri 可與下列 DBMS_CLOUD 程序搭配使用:

  • COPY_COLLECTION

  • COPY_DATA

  • CREATE_EXTERNAL_TABLE

  • CREATE_EXTERNAL_PART_TABLE

  • CREATE_HYBRID_PART_TABLE

regexuri 的值設為 TRUE 時,您可以在雲端來源檔案 URI 的檔案名稱中使用萬用字元以及正規表示式。

regexuri 參數設為 FALSE 時,會將字元 "*" 和 "?" 視為萬用字元。當 regexuri 參數設為 TRUE 時,字元 "*" 和 "?" 是指定之正規表示式樣式的一部分。

唯有 URI 中的檔案名稱或子資料夾路徑支援正規表示式樣式,且樣式比對與 REGEXP_LIKE 函數所執行的樣式相同。目錄名稱不支援正規表示式樣式。

對於外部表格,只有在物件儲存的檔案上建立的表格才支援此選項。

舉例而言:

format => JSON_OBJECT('regexuri' value TRUE)

請參閱 Oracle Database 19c SQL Language Reference 中的 REGEXP_LIKE 條件Oracle Database 23ai SQL Language Reference ,瞭解 REGEXP_LIKE 條件的詳細資訊。

regexuri: True

預設值:False

rejectlimit

作業會在拒絕的資料列達到指定的數目後發出錯誤.

rejectlimit數字

預設值:0

removequotes

移除來源檔案中所有欄位的任何引號。

removequotes: true

預設值:False

skipheaders

指定應略過檔案開頭處的幾個資料列.

skipheaders數字

預設值:若未指定,則為 0,若未指定值則為 1

territory

指定領域名稱以進一步決定輸入資料特性。

territory字串

預設值:空值

如需 Oracle 支援語言的清單,請參閱 Oracle Database 19c Database Globalization Support Guide 中的 Locale DataOracle Database 23ai Database Globalization Support Guide

timestampformat

指定來源檔案中的時戳格式。格式選項 AUTO 會搜尋下列格式:

YYYY-MM-DD HH:MI:SS.FF 
YYYY-MM-DD HH:MI:SS.FF3
YYYY-MM-DD HH24:MI:SS.FF3
MM/DD/YYYY HH:MI:SS.FF3

timestampformat字串

預設值:資料庫時戳格式

字串可以包含萬用字元,例如 "$"。

timestampltzformat

指定來源檔案中當地時區格式的時戳。格式選項 AUTO 會搜尋下列格式:

DD Mon YYYY HH:MI:SS.FF TZR 
MM/DD/YYYY HH:MI:SS.FF TZR 
YYYY-MM-DD HH:MI:SS+/-TZR 
YYYY-MM-DD HH:MI:SS.FF3 
DD.MM.YYYY HH:MI:SS TZR

timestampltzformat字串

預設值:以當地時區格式表示的資料庫時戳

timestamptzformat

指定來源檔案中時區格式的時戳。格式選項 AUTO 會搜尋下列格式:

DD Mon YYYY HH:MI:SS.FF TZR 
MM/DD/YYYY HH:MI:SS.FF TZR 
YYYY-MM-DD HH:MI:SS+/-TZR 
YYYY-MM-DD HH:MI:SS.FF3 
DD.MM.YYYY HH:MI:SS TZR

timestamptzformat字串

預設值:含有時區格式的資料庫時戳

trimspaces

指定如何去除欄位的前後空格。

請參閱 Oracle Database 19c 公用程式Oracle Database 23ai 公用程式trim_spec 的描述。

trimspaces: rtrim| ltrim| notrim| lrtrim| ldrtrim

預設值:notrim

truncatecol

檔案中的資料對欄位而言若太長的話, 此選項將會截斷欄位的值, 而不是拒絕該資料列.

truncatecol:true

預設值:False

type

指定來源檔案類型。

請參閱 Oracle Database 19c UtilitiesOracle Database 23ai UtilitiesCSV 的描述。

如果 typedatapump,則唯一有效的格式選項為 rejectlimit

如果 typedatapump,則唯一支援的物件存放區為 Oracle Cloud Infrastructure 物件儲存和 Oracle Cloud Infrastructure Object Storage Classic

請參閱 DBMS_CLOUD Avro、ORC 或 Parquet 的套件格式選項,以取得 typeavroorcparquet

對於 DBMS_CLOUD.COPY_COLLECTION type 的 JSON 資料,有兩個有效值:json (預設值) 和 ejson。對於 DBMS_CLOUD.COPY_COLLECTION ,這兩個值都指定輸入為 JSON 資料。值 ejson 會讓文字 JSON 輸入資料中的延伸物件轉譯為原生二進位 JSON 集合中的純量 JSON 值。json 值不會執行此轉換,輸入資料中的所有物件都會轉換成二進位 JSON 格式。

對於 DBMS_CLOUD.COPY_DATA type 的 JSON 資料,有一個有效值:json。此值指定輸入為 JSON 資料。

type: csv|csv with embedded|csv without embedded |avro||datapump|orc|parquet

附註:

並非所有的 DBMS_CLOUD 程序都支援這些類型。

csvcsv without embedded 相同。

預設值:空值

對於 JSON 資料,有兩個有效的 type 值可用於 DBMS_CLOUD.COPY_COLLECTIONjson|ejson 在此情況下,預設值為 json。對於含有 DBMS_CLOUD.COPY_DATA 的 JSON 資料,只有 json 有效。

unpackarrays

僅與 COPY_COLLECTION 搭配使用

設為 true 時,如果載入的文件是陣列,則陣列的內容會載入為文件而非陣列本身。這僅適用於最上層陣列。

設為 true 時,會將整個陣列插入為單一文件。

此選項僅對含 DBMS_CLOUD.COPY_COLLECTION 的 JSON 集合資料有效。

unpackarrays: true

預設值:False