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 格式選項,請參閱 Avro、ORC 或 Parquet 的 DBMS_CLOUD 套件格式選項

格式選項資料欄中所述,當 format type 為 JSON 時,有限的格式選項集對 DBMS_CLOUD.COPY_COLLECTIONDBMS_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 GuideOracle Database 26ai JSON Developer's GuideSQL/JSON Path Expressions 所述的規則。

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

json 路徑表示式的 JSON 陣列,以字串格式表示。例如:'columnpath' 值 '["$.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 UtilitiesOracle Database 23ai Utilities 中的 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

其中值是提供額外加密參數的 JSON 字串:

type:值

指定加密類型。

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:字串

預設值:Null

`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 時,預設字串值為 NULL

language 指定語言名稱 (例如 FRENCH),您可以從中衍生語言環境機密資訊。

已處理的 language:字串

預設值:Null

如需 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

依照預設,logprefix 會是大寫,但如果指定的值以雙引號括住,則會保留大小寫。

舉例而言:

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:字元

預設值:Null 表示無引號

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 時,您可以在 Cloud 來源檔案 URI 的檔案名稱中使用萬用字元以及正規表示式。

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

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

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

舉例而言:

format => JSON_OBJECT('regexuri' value TRUE)

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

regexuri: True

預設值:False

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

rejectlimit:數字

預設值:0

removequotes 移除來源檔案中任何欄位周圍的引號。

removequotes: true

預設值:False

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

skipheaders:數字

預設值:0 (若未指定),1 (若未指定值)

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

territory:字串

預設值:Null

如需 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 UtilitiesOracle Database 23ai Utilities 中的 trim_spec 描述。

trimspaces: rtrim| ltrim| notrim| lrtrim| ldrtrim

預設值:notrim

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

truncatecol:true

預設值:False

type

指定來源檔案類型。

請參閱 Oracle Database 19c UtilitiesOracle Database 23ai Utilities 中的 CSV 描述。

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

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

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

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 相同。

預設值:Null

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

unpackarrays

僅與 COPY_COLLECTION 搭配使用

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

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

此選項僅適用於含有 DBMS_CLOUD.COPY_COLLECTION 的 JSON 收集資料。

unpackarrays: true

預設值:False

相關內容