Oracle NoSQL Database 移轉器參照
瞭解 Oracle NoSQL Database Migrator 可用的來源、接收和轉換組態樣板參數。
本文包含下列主題:
參數
「NoSQL 資料庫移轉程式」需要一個組態檔,供您定義執行移轉活動的所有參數。有一些參數通用於數個來源與接收器。本主題提供這些通用參數的清單。如需個別來源或接收器獨有的其他參數清單,請參閱對應的組態樣板段落。
通用組態參數
下列是一般組態參數。如需範例,請參閱個別的配置範本小節。
-
用途:指定 OCI 物件儲存的儲存桶名稱,其中包含來源 / 接收器物件。
確定 OCI 物件儲存執行處理中已經有必要的儲存桶,而且具備讀取 / 寫入權限。
-
資料類型: 字串
-
必要 (Y/N): Y
-
用途:指定儲存於接收器之表格資料
chunk的大小上限。值以 MB 為單位。在移轉期間,表格會分割成chunkSize區塊,而每個區塊都會以個別的檔案寫入接收器。當要移轉的來源資料超過chunkSize值時,就會建立新的檔案。若未指定,預設為 32MB。有效值為 1 到 1024 之間的整數。
如需如何使用
chunkSize參數提升移轉速度的詳細資訊,請參閱最佳實務。 -
資料類型:整數
-
必要 (Y/N): N
-
用途:指定包含 OCI 證明資料之檔案的絕對路徑。NoSQL 資料庫移轉器會使用此檔案連線至 OCI 服務,例如 Oracle NoSQL Database Cloud Service、OCI 物件儲存等等。
預設值為
$HOME/.oci/config請參閱範例組態或證明資料檔案的範例。
注意:您只能選取其中一個認證選項。因此,在組態樣板中只指定下列其中一個參數 -
credentials、 useDelegationToken 、 useSessionToken 或 useOKEWorkloadIdentity 。 -
資料類型: 字串
-
必要 (Y/N): N
-
用途:指定用於連線至 OCI 服務 (例如 Oracle NoSQL Database Cloud Service、OCI Object Storage 等) 的組態設定檔名稱。使用者帳戶證明資料稱為設定檔。
若未指定此值,NoSQL 資料庫移轉程式會使用
DEFAULT設定檔。注意:只有在指定證明資料參數時,此參數才有效。
-
資料類型: 字串
-
必要 (Y/N): N
-
用途:指定下列其中一項:
-
OCI 物件儲存服務的服務端點 URL 或區域 ID。如需 OCI 物件儲存服務端點清單,請參閱物件儲存端點
-
Oracle NoSQL Database Cloud Service 的服務端點 URL 或區域 ID。您可以單獨指定完整的 URL 或「區域 ID」。如需 Oracle NoSQL Database Cloud Service 支援的資料區域清單,請參閱 Oracle NoSQL Database Cloud Service 文件中的資料區域與相關服務 URL 。
-
-
資料類型: 字串
-
必要 (Y/N): Y
-
用途:指定來源 / 接收器格式。
-
資料類型: 字串
-
必要 (Y/N): Y
-
用途:指定 OCI 物件儲存服務的命名空間。這是選擇性參數。如果您未指定此參數,Migrator 公用程式會使用指定給租用戶的命名空間。
例如,當您想要使用不同於租用戶的 OCI 作業系統時,命名空間參數就很有用。在這種情況下,OCI 作業系統租用戶的命名空間與租用戶的命名空間不同。移轉時,除非另有指定,否則移轉程式公用程式會預設為租用戶的命名空間。因此,若要指示移轉程式公用程式選擇 OCI 作業系統租用戶的命名空間,您必須在命名空間參數中指定 OCI 作業系統租用戶的名稱。
-
資料類型: 字串
-
必要 (Y/N): N
-
用途:前置碼可作為邏輯容器或目錄,用於將資料儲存在 OCI Object Storage 貯體中。
-
來源組態樣板:如果指定
prefix參數,則會移轉prefix參數中指定之目錄的所有物件。否則,系統會移轉儲存桶中的所有物件。 -
接收器組態樣板:如果指定
prefix參數,就會在儲存桶中建立具有指定前置碼的目錄,並將物件移轉至此目錄。否則,會使用來源的表格名稱作為前置碼。如果儲存桶中已有相同名稱的物件存在,該物件就會被覆寫。
如需有關首碼的詳細資訊,請參閱使用首碼和階層命名物件。
-
-
資料類型: 字串
-
必要 (Y/N): N
-
用途:指定從存放區或從存放區完成每個讀取 / 寫入作業的等待時間。以毫秒為單位提供此功能。預設值為 5000。值可以是任何正整數。
-
資料類型:整數
-
必要 (Y/N): N
-
用途:如果您的存放區是安全存放區,請指定包含您存放區證明資料之安全登入檔案的絕對路徑。如需安全性登入檔案的詳細資訊,請參閱 Performing a Secure Oracle NoSQL Database Installation 。
您可以使用密碼檔式認證或公事包式認證。不過,只有 Oracle NoSQL Database 的 Enterprise Edition (EE) 才支援公事包式認證。如需有關公事包式認證的詳細資訊,請參閱來源和接收器安全。
Community Edition (CE) 版本僅支援密碼檔式認證。
-
資料類型: 字串
-
必要 (Y/N): Y,適用於安全存放區
-
目的:識別來源 / 接收器類型。
-
資料類型: 字串
-
必要 (Y/N): Y
-
用途:指定 NoSQL Database Migrator 工具是否使用委派權杖認證連線至 OCI 服務。您必須使用委派權杖認證,才能從 Cloud Shell 執行 Migrator 公用程式。呼叫 Cloud Shell 時,會自動為使用者建立委派權杖。
預設值為
false。請注意以下事項:
-
從 Cloud Shell 執行 NoSQL 資料庫移轉器工具時,才支援使用委派權杖進行認證。
-
您只能選取其中一個認證選項。因此,在組態樣板中只指定下列其中一個參數 - credentials 、 useInstancePrincipal 、
useDelegationToken、 useSessionToken 或 useOKEWorkloadIdentity 。 -
Cloud Shell 只支援下列來源與接收器之間的移轉:
Type 有效的來源 有效槽 Oracle NoSQL Database Cloud Service ( nosqldb_cloud)Y Y 檔案 (本位目錄中的 JSON 檔案) Y Y OCI 物件儲存 (JSON 檔案) ( object_storage_oci)Y Y OCI 物件儲存 (Parquet 檔案) ( object_storage_oci)N 項 Y
-
-
資料類型:布林值
-
必要 (Y/N): N
-
用途:指定 NoSQL Database Migrator 工具是否使用執行處理主體認證來連線至 OCI 服務,例如 Oracle NoSQL Database Cloud Service、OCI Object Storage 等。如需有關「執行處理主體」認證方法的詳細資訊,請參閱來源與接收器安全性。
預設值為
false。注意:
-
只有在 OCI 運算執行處理內執行 NoSQL 資料庫移轉器工具 (例如在 OCI 代管的 VM 中執行的 NoSQL 資料庫移轉器工具) 時,才支援使用執行處理主體進行認證。
-
您只能選取其中一個認證選項。因此,在組態樣板中只指定下列其中一個參數 - credentials 、
useInstancePrincipal、 useDelegationToken 、 useSessionToken 或 useOKEWorkloadIdentity 。
-
-
資料類型:布林值
-
必要 (Y/N): N
-
目的:指定 NoSQL 資料庫移轉器工具是否使用工作負載識別認證 (WIA) 從 Oracle Kubernetes Engine (OKE) Pod 存取 OCI 物件儲存和 Oracle NoSQL Database Cloud Service。
預設值為
false。 -
資料類型:布林值
-
必要 (Y/N): N
如需範例使用案例,請參閱 Migrate from OCI Object Storage to Oracle NoSQL Database Cloud Service Using OKE Authentication 。
注意:您只能選取其中一個認證選項。因此,在組態樣板中只指定下列其中一個參數 - credentials 、 useInstancePrincipal 、 useDelegationToken 、 useSessionToken 或 useOKEWorkloadIdentity。
-
用途:指定 NoSQL Database Migrator 工具是否使用階段作業權杖認證來連線至 OCI 服務,例如 OCI Object Storage (OCI OS) 和 Oracle NoSQL Database Cloud Service。預設值為
false。 -
資料類型:布林值
-
必要 (Y/N): N
若要使用以階段作業記號為基礎的認證,您必須使用 OCI 命令行介面 (CLI) 命令產生階段作業記號。 如需範例使用案例,請參閱使用階段作業記號認證從 Oracle NoSQL Database 移轉至 OCI Object Storage 。
注意:
-
使用階段作業記號認證時,您必須在證明資料參數中指定 OCI 組態檔的路徑,以及在 credentialProfile 參數中產生階段作業記號時使用的設定檔。如果您未在組態樣板中設定證明資料參數,Migrator 公用程式會尋找路徑
$HOME/.oci中的證明資料檔案。如果您未在組態樣板中設定 creditsProfile 參數,Migrator 公用程式會使用 OCI 組態檔的預設設定檔名稱 (DEFAULT)。如果 Migrator 公用程式找不到證明資料檔案,移轉會失敗,並顯示傳達 OCI 證明資料檔案不存在的錯誤訊息。
-
您只能選取其中一個認證選項。因此,在組態樣板中只指定下列其中一個參數 - credentials 、 useInstancePrincipal 、 useDelegationToken 、
useSessionToken或 useOKEWorkloadIdentity 。
來源組態範本
瞭解每個有效來源的來源組態檔格式,以及每個組態參數的用途。
如需組態檔樣板的相關資訊,請參閱與 NoSQL 資料移轉器搭配使用的術語中的組態檔。
如需每個來源之有效接收器格式的詳細資訊,請參閱接收組態樣板。
主題
下列主題描述 Oracle NoSQL Database Migrator 所參照的來源組態樣板,將資料從指定的來源複製到有效的 Sink。
-
指定的檔案或包含 JSON 資料的目錄。
-
OCI 物件儲存的儲存桶中指定的 JSON 檔案。
-
指定的檔案或目錄包含 MongoDB 格式的 JSON 資料。
-
OCI 物件儲存的儲存桶中 MongoDB 格式的 JSON 檔案
指定的 MongoDB 匯出儲存在 OCI 物件儲存的儲存桶中的 JSON 檔案。
-
儲存在 AWS S3 中的 DynamoDB 格式 JSON 檔案
指定的 DynamoDB 匯出儲存在 AWS S3 儲存中的 JSON 檔案。
-
指定的 DynamoDB 已從檔案系統匯出 JSON 檔案。
-
Oracle NoSQL Database 中指定的表格。
-
Oracle NoSQL Database Cloud Service
Oracle NoSQL Database Cloud Service 中指定的表格。
-
指定的檔案或包含 CSV 資料的目錄。
-
OCI 物件儲存的儲存桶中指定的 CSV 檔案。
JSON 檔案來源
下方顯示作為 NoSQL 資料庫移轉器來源的 JSON 檔案組態檔格式。
您可以在來源組態範本中指定檔案路徑或目錄,以移轉 JSON 來源檔案。
JSON 來源檔案範例如下:
{"id":6,"val_json":{"array":["q","r","s"],"date":"2023-02-04T02:38:
57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-03-04T02:38:57.520Z","numfield":30,"strfield":"foo54"},{"datefield":"2023-02-04T02:38:57.520Z","numfield":56,"strfield":"bar23"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}}
{"id":3,"val_json":{"array":["g","h","i"],"date":"2023-02-02T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-02-02T02:38:57.520Z","numfield":28,"strfield":"foo3"},{"datefield":"2023-02-02T02:38:57.520Z","numfield":38,"strfield":"bar"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}}
來源組態範本
"source": {
"type": "file",
"format": "json",
"dataPath": "<path/to/JSON/[file|dir]>",
"schemaInfo": {
"schemaPath": "<path/to/schema/file>"
}
},
來源 參數
通用組態參數
唯一組態參數
-
用途:指定包含要移轉之 JSON 資料的檔案或目錄的絕對路徑。
您必須確定此資料與在接收器定義的 NoSQL 表格綱要相符。如果您指定目錄,「NoSQL 資料庫移轉程式」會識別該目錄中副檔名為
.json的所有檔案以進行移轉。不支援子目錄。 -
資料類型: 字串
-
必要 (Y/N): Y
-
範例:
-
指定 JSON 檔案
"dataPath" : "/home/user/sample.json" -
指定一個目錄
"dataPath" : "/home/user"
-
-
目的:指定要移轉之來源資料的結構。此綱要會傳送到 NoSQL 接收器。
-
資料類型:物件
-
必要 (Y/N): N
-
用途:指定綱要定義檔的絕對路徑,其中包含要移轉之 NoSQL 表格的 DDL 敘述句。
-
資料類型: 字串
-
必要 (Y/N): Y
-
範例:
"schemaInfo": { "schemaPath": "<path to the schema file>" }
OCI 物件儲存的儲存桶中的 JSON 檔案
下方顯示 OCI 物件儲存的儲存桶中作為 NoSQL 資料庫移轉器來源的 JSON 檔案組態檔格式。
您可以在來源組態樣板中指定儲存桶的名稱,以移轉 OCI 物件儲存的儲存桶中的 JSON 檔案。
OCI Object Storage 貯體中的 JSON 來源檔案範例如下:
{"id":6,"val_json":{"array":["q","r","s"],"date":"2023-02-04T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-02-04T02:38:57.520Z","numfield":30,"strfield":"foo54"},{"datefield":"2023-02-04T02:38:57.520Z","numfield":56,"strfield":"bar23"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}}
{"id":3,"val_json":{"array":["g","h","i"],"date":"2023-02-04T02:38:57.520Z","nestarray":[[1,2,3],[10,20,30]],"nested":{"arrayofobjects":[{"datefield":"2023-02-04T02:38:57.520Z","numfield":28,"strfield":"foo3"},{"datefield":"2023-02-04T02:38:57.520Z","numfield":38,"strfield":"bar"}],"nestNum":10,"nestString":"bar"},"num":1,"string":"foo"}}
注意: OCI Object Storage 來源類型的有效接收器類型為 nosqldb 和 nosqldb_cloud。
來源組態範本
"source" : {
"type" : "object_storage_oci",
"format" : "json",
"endpoint" : "<OCI Object Storage service endpoint URL or region ID>",
"namespace" : "<OCI Object Storage namespace>",
"bucket" : "<bucket name>",
"prefix" : "<object prefix>",
"schemaInfo" : {
"schemaObject" : "<object name>"
},
"credentials" : "</path/to/oci/config/file>",
"credentialsProfile" : "<profile name in oci config file>",
"useInstancePrincipal" : <true|false>,
"useDelegationToken" : <true|false>,
"useSessionToken" : <true|false>,
"useOKEWorkloadIdentity" : <true|false>
}
來源 參數
通用組態參數
-
使用
"type" : "object_storage_oci" -
使用
"format" : "json" -
範例:
-
區域 ID:
"endpoint" : "us-ashburn-1" -
URL 格式:
"endpoint" : "https://objectstorage.us-ashburn- 1.oraclecloud.com"
-
-
範例:
"namespace" : "my-namespace" -
範例:
"bucket" : "my-bucket" -
範例:
-
"prefix" : "my_table/Data/000000.json"(僅移轉000000.json) -
"prefix" : "my_table/Data"(移轉前置碼為my_table/Data的所有物件)
-
-
範例:
-
"credentials" : "/home/user/.oci/config" -
"credentials" : "/home/user/security/config"
-
-
範例:
-
"credentialsProfile" : "DEFAULT" -
"credentialsProfile" : "ADMIN_USER"
-
-
範例:
"useInstancePrincipal" : true -
範例:
"useDelegationToken" : true注意:只有從 Cloud Shell 執行 NoSQL 資料庫移轉程式時,才支援使用委派權杖的認證。
-
範例:
"useOKEWorkloadIdentity" : true -
範例:
"useSessionToken" : true
唯一組態參數
-
目的:指定要移轉之來源資料的結構。此綱要會傳送到 NoSQL 接收器。
-
資料類型:物件
-
必要 (Y/N): N
-
用途:指定儲存桶中物件的名稱,其中儲存所移轉資料的 NoSQL 表格綱要定義。
-
資料類型: 字串
-
必要 (Y/N): Y
-
範例:
"schemaInfo": { "schemaObject": "mytable/Schema/schema.ddl" },
MongoDB 格式的 JSON 檔案
下方顯示作為 NoSQL 資料庫移轉器來源的 MongoDB 格式 JSON 檔案組態檔格式。
您可以在來源組態樣板中指定檔案或目錄,以移轉 MongoDB 匯出的 JSON 資料。
MongoDB 支援兩種類型的 JSON 檔案格式副檔名:正規模式和放寬模式。您可以提供使用 mongoexport 工具在「正規」或「放鬆」模式中產生的 MongoDB 格式 JSON 檔案。NoSQL Database Migrator 支援兩種模式以進行移轉。
如需有關 MongoDB Extended JSON (v2) 檔案的詳細資訊,請參閱 mongoexport_formats 。
如需有關產生 MongoDB 格式 JSON 檔案的詳細資訊,請參閱 mongoexport 以瞭解詳細資訊。
以下是 MongoDB 格式的放寬模式 JSON 檔案範例:
{"_id":0,"name":"Aimee Zank","scores":[{"score":
1.463179736705023,"type":"exam"},{"score":11.78273309957772,"type":"quiz"},{"score":35.8740349954354,"type":"homework"}]}
{"_id":1,"name":"Aurelia Menendez","scores":[{"score":60.06045071030959,"type":"exam"},{"score":52.79790691903873,"type":"quiz"},{"score":71.76133439165544,"type":"homework"}]}
{"_id":2,"name":"Corliss Zuk","scores":[{"score":67.03077096065002,"type":"exam"},{"score":6.301851677835235,"type":"quiz"},{"score":66.28344683278382,"type":"homework"}]}
{"_id":3,"name":"Bao Ziglar","scores":[{"score":71.64343899778332,"type":"exam"},{"score":24.80221293650313,"type":"quiz"},{"score":42.26147058804812,"type":"homework"}]}
{"_id":4,"name":"Zachary Langlais","scores":[{"score":78.68385091304332,"type":"exam"},{"score":90.2963101368042,"type":"quiz"},{"score":34.41620148042529,"type":"homework"}]}
來源組態範本
"source": {
"type": "file",
"format": "mongodb_json",
"dataPath": "</path/to/json/[file|dir]>",
"schemaInfo": {
"schemaPath": "</path/to/schema/file>"
}
}
來源 參數
通用組態參數
唯一組態參數
-
用途:指定檔案或目錄的絕對路徑,其中包含要移轉的 MongoDB 匯出 JSON 資料。
您可以提供使用 mongoexport 工具產生的 MongoDB 格式 JSON 檔案。
如果您指定目錄,「NoSQL 資料庫移轉程式」會識別該目錄中副檔名為
.json的所有檔案以進行移轉。不支援子目錄。您必須確定此資料與在接收器定義的 NoSQL 表格綱要相符。 -
資料類型: 字串
-
必要 (Y/N): Y
-
範例:
-
指定 MongoDB 格式的 JSON 檔案
"dataPath" : "/home/user/sample.json" -
指定一個目錄
"dataPath" : "/home/user"
-
-
目的:指定要移轉之來源資料的結構。此綱要會傳送到有效的接收器。
-
資料類型:物件
-
必要 (Y/N): N
-
用途:指定綱要定義檔的絕對路徑,其中包含要移轉之 NoSQL 表格的 DDL 敘述句。
-
資料類型: 字串
-
必要 (Y/N): Y
-
範例:
"schemaInfo" : { "schemaPath" : "/home/user/mytable/Schema/schema.ddl" }
OCI 物件儲存的儲存桶中 MongoDB 格式的 JSON 檔案
下方顯示 OCI 物件儲存的儲存桶中 MongoDB 格式 JSON 檔案的組態檔格式,作為 NoSQL 資料庫移轉器的來源。
您可以在來源組態樣板中指定儲存桶的名稱,以移轉 OCI 物件儲存的儲存桶中的 MongoDB 匯出的 JSON 資料。
使用 mongoexport 公用程式從 MongoDB 擷取資料,並將其上傳至 OCI Object Storage 貯體。請參閱 mongoexport 以取得詳細資訊。MongoDB 支援兩種類型的 JSON 檔案格式副檔名:正規模式和放寬模式。OCI 物件儲存的儲存桶支援這兩種格式。
以下是 MongoDB 格式的放寬模式 JSON 檔案範例:
{"_id":0,"name":"Aimee Zank","scores":[{"score":1.463179736705023,"type":"exam"},{"score":11.78273309957772,"type":"quiz"},{"score":35.8740349954354,"type":"homework"}]}
{"_id":1,"name":"Aurelia Menendez","scores":[{"score":60.06045071030959,"type":"exam"},{"score":52.79790691903873,"type":"quiz"},{"score":71.76133439165544,"type":"homework"}]}
{"_id":2,"name":"Corliss Zuk","scores":[{"score":67.03077096065002,"type":"exam"},{"score":6.301851677835235,"type":"quiz"},{"score":66.28344683278382,"type":"homework"}]}
{"_id":3,"name":"Bao Ziglar","scores":[{"score":71.64343899778332,"type":"exam"},{"score":24.80221293650313,"type":"quiz"},{"score":42.26147058804812,"type":"homework"}]}
{"_id":4,"name":"Zachary Langlais","scores":[{"score":78.68385091304332,"type":"exam"},{"score":90.2963101368042,"type":"quiz"},{"score":34.41620148042529,"type":"homework"}]}
注意: OCI Object Storage 來源類型的有效接收器類型為 nosqldb 和 nosqldb_cloud。
來源組態範本
"source" : {
"type" : "object_storage_oci",
"format" : "mongodb_json",
"endpoint" : "<OCI Object Storage service endpoint URL or region ID>",
"namespace" : "<OCI Object Storage namespace>",
"bucket" : "<bucket name>",
"prefix" : "<object prefix>",
"schemaInfo" : {
"schemaObject" : "<object name>"
},
"credentials" : "</path/to/oci/config/file>",
"credentialsProfile" : "<profile name in oci config file>",
"useInstancePrincipal" : <true|false>,
"useDelegationToken" : <true|false>,
"useSessionToken" : <true|false>,
"useOKEWorkloadIdentity" : <true|false>
}
來源 參數
通用組態參數
-
使用
"type" : "object_storage_oci" -
使用
"format" : "mongodb_json" -
範例:
-
區域 ID:
"endpoint" : "us-ashburn-1" -
URL 格式:
"endpoint" : "https://objectstorage.us-ashburn- 1.oraclecloud.com"
-
-
範例:
"namespace" : "my-namespace" -
範例:
"bucket" : "my-bucket" -
範例:
-
"prefix" : "mongo_export/Data/table.json"(僅移轉table.json) -
"prefix" : "mongo_export/Data"(移轉前置碼為mongo_export/Data的所有物件)
注意:如果您未提供任何值,則會移轉儲存桶中的所有物件。
-
-
範例:
-
"credentials" : "/home/user/.oci/config" -
"credentials" : "/home/user/security/config"
-
範例:
-
"credentialsProfile" : "DEFAULT" -
"credentialsProfile" : "ADMIN_USER"
-
-
範例:
"useInstancePrincipal" : true -
範例:
"useDelegationToken" : true注意:只有從 Cloud Shell 執行 NoSQL 資料庫移轉程式時,才支援使用委派權杖的認證。
-
範例:
"useOKEWorkloadIdentity" : true -
範例:
"useSessionToken" : true
唯一組態參數
-
目的:指定要移轉之來源資料的結構。此綱要會傳送到 NoSQL 接收器。
-
資料類型:物件
-
必要 (Y/N): N
-
用途:指定儲存桶中物件的名稱,其中儲存所移轉資料的 NoSQL 表格綱要定義。
-
資料類型: 字串
-
必要 (Y/N): Y
-
範例:
"schemaInfo": { "schemaObject": "mytable/Schema/schema.ddl" }
儲存在 AWS S3 中的 DynamoDB 格式 JSON 檔案
下方顯示 AWS S3 中 DynamoDB 格式 JSON 檔案的組態檔格式,作為 NoSQL 資料庫移轉程式的來源。
您可以在來源組態樣板中指定路徑,將包含 DynamoDB 匯出之 JSON 資料的檔案從 AWS S3 儲存移轉。
以下是 DynamoDB 格式的 JSON 檔案範例:
{"Item":{"Id":{"N":"101"},"Phones":{"L":[{"L":[{"S":"555-222"},{"S":"123-567"}]}]},"PremierCustomer":{"BOOL":false},"Address":{"M":{"Zip":{"N":"570004"},"Street":{"S":"21 main"},"DoorNum":{"N":"201"},"City":{"S":"London"}}},"FirstName":{"S":"Fred"},"FavNumbers":{"NS":["10"]},"LastName":{"S":"Smith"},"FavColors":{"SS":["Red","Green"]},"Age":{"N":"22"},"ttl": {"N": "1734616800"}}}
{"Item":{"Id":{"N":"102"},"Phones":{"L":[{"L":[{"S":"222-222"}]}]},"PremierCustomer":{"BOOL":false},"Address":{"M":{"Zip":{"N":"560014"},"Street":{"S":"32 main"},"DoorNum":{"N":"1024"},"City":{"S":"Wales"}}},"FirstName":{"S":"John"},"FavNumbers":{"NS":["10"]},"LastName":{"S":"White"},"FavColors":{"SS":["Blue"]},"Age":{"N":"48"},"ttl": {"N": "1734616800"}}}
您必須將 DynamoDB 表格匯出至 AWS S3 儲存,如匯出 DynamoDB 表格資料至 Amazon S3 中所指定。
儲存在 AWS S3 中之 DynamoDB 格式 JSON 的有效接收器類型為 nosqldb 與 nosqldb_cloud。
來源組態範本
"source" : {
"type" : "aws_s3",
"format" : "dynamodb_json",
"ttlAttributeName" : "<DynamoDB exported TTL attribute name>",
"s3URL" : "<S3 object url>",
"credentials" : "</path/to/aws/credentials/file>",
"credentialsProfile" : "<profile name in aws credentials file>"
}
來源 參數
通用組態參數
唯一組態參數
-
用途:指定 AWS S3 中儲存之匯出 DynamoDB 表格的 URL。您可以從 AWS S3 主控台取得此 URL。有效的 URL 格式為
https://<bucket-name>.<s3_endpoint>/<prefix>。「NoSQL 資料庫移轉程式」會在匯入時尋找前置碼中的json.gz檔案。注意:您必須匯出 DynamoDB 表格 (如匯出 DynamoDB 表格資料至 Amazon S3 中所指定)。
-
資料類型: 字串
-
必要 (Y/N): Y
-
範例:
https://my-bucket.s3.ap-south-1.amazonaws.com/AWSDynamoDB/01649660790057-14f642be
-
用途:指定包含 AWS 證明資料之檔案的絕對路徑。若未指定,預設為
$HOME/.aws/credentials。如需證明資料檔案的詳細資訊,請參閱組態和證明資料檔案設定值。 -
資料類型: 字串
-
必要 (Y/N): N
-
範例:
"credentials" : "/home/user/.aws/credentials""credentials" : "/home/user/security/credentials注意: NoSQL 資料庫移轉程式不會記錄任何證明資料資訊。您必須正確保護證明資料檔案,避免未經授權的存取。
- 用途:用於連線至 AWS S 的 AWS 證明資料檔案中的設定檔名稱
- 使用者帳戶證明資料稱為設定檔。若未指定此值,則 NoSQL Database Migrator 會使用
default設定檔。如需證明資料檔案的詳細資訊,請參閱組態和證明資料檔案設定值。
- 使用者帳戶證明資料稱為設定檔。若未指定此值,則 NoSQL Database Migrator 會使用
-
資料類型: 字串
-
必要 (Y/N): N
-
範例:
"credentialsProfile" : "default""credentialsProfile" : "test"
-
用途:指定匯出之 DynamoDB 表格資料中的 TTL 屬性名稱。只有當 DynamoDB 表格資料具有 TTL 屬性,且您要在匯入至 NoSQL 資料庫時設定匯入資料的 TTL 值時,才包含此參數。
注意:若要使用 TTL 描述資料匯入,您必須在接收器組態樣板 (
nosqldb和nosqldb_cloud) 中將 includeTTL 組態參數設為 true。 -
資料類型: 字串
-
必要 (Y/N): N
-
範例:
"ttlAttributeName" : "ttl"
DynamoDB 格式的 JSON 檔案
以 DynamoDB 格式的 JSON 檔案作為 NoSQL 資料庫移轉程式來源的組態檔格式如下所示。
您可以在來源組態樣板中指定路徑,從檔案系統移轉包含 DynamoDB 匯出之 JSON 資料的檔案或目錄。
以下是 DynamoDB 格式的 JSON 檔案範例:
{"Item":{"Id":{"N":"101"},"Phones":{"L":[{"L":[{"S":"555-222"},{"S":"123-567"}]}]},"PremierCustomer":{"BOOL":false},"Address":{"M":{"Zip":{"N":"570004"},"Street":{"S":"21 main"},"DoorNum":{"N":"201"},"City":{"S":"London"}}},"FirstName":{"S":"Fred"},"FavNumbers":{"NS":["10"]},"LastName":{"S":"Smith"},"FavColors":{"SS":["Red","Green"]},"Age":{"N":"22"},"ttl": {"N": "1734616800"}}}
{"Item":{"Id":{"N":"102"},"Phones":{"L":[{"L":[{"S":"222-222"}]}]},"PremierCustomer":{"BOOL":false},"Address":{"M":{"Zip":{"N":"560014"},"Street":{"S":"32 main"},"DoorNum":{"N":"1024"},"City":{"S":"Wales"}}},"FirstName":{"S":"John"},"FavNumbers":{"NS":["10"]},"LastName":{"S":"White"},"FavColors":{"SS":["Blue"]},"Age":{"N":"48"},"ttl": {"N": "1734616800"}}}
您必須將匯出的 DynamoDB 表格資料從 AWS S3 儲存複製到本機掛載的檔案系統。
DynamoDB JSON 檔案的有效接收器類型為 nosqldb 與 nosqldb_cloud。
來源組態範本
"source" : {
"type" : "file",
"format" : "dynamodb_json",
"ttlAttributeName" : <DynamoDB exported TTL attribute name>,
"dataPath" : "<path/to/[file|dir]/containing/exported/DDB/tabledata>"
}
來源 參數
通用組態參數
唯一組態參數
-
用途:指定包含匯出之 DynamoDB 表格資料之檔案或目錄的絕對路徑。您必須將匯出的 DynamoDB 表格資料從 AWS S3 複製到本機掛載的檔案系統。您必須確定此資料與在接收器定義的 NoSQL 表格綱要相符。如果指定目錄,「NoSQL 資料庫移轉程式」會識別該目錄中副檔名為
.json.gz的所有檔案,以及data子目錄。 -
資料類型: 字串
-
必要 (Y/N): Y
-
範例:
-
指定檔案
"dataPath" : "/home/user/AWSDynamoDB/01639372501551-bb4dd8c3/data/zclclwucjy6v5mkefvckxzhfvq.json.gz" -
指定一個目錄
"dataPath" : "/home/user/AWSDynamoDB/01639372501551-bb4dd8c3"
-
-
用途:指定匯出之 DynamoDB 表格資料中的 TTL 屬性名稱。只有當 DynamoDB 表格資料具有 TTL 屬性,且您要在匯入至 NoSQL 資料庫時設定匯入資料的 TTL 值時,才包含此參數。
注意:若要使用 TTL 描述資料匯入,您必須在接收器組態樣板 (
nosqldb和nosqldb_cloud) 中將 includeTTL 組態參數設為 true。 -
資料類型: 字串
-
必要 (Y/N): N
-
範例:
"ttlAttributeName" : "ttl"
Oracle NoSQL Database
Oracle NoSQL Database 作為 NoSQL Database Migrator 來源的組態檔格式如下所示。
您可以在來源組態樣板中指定表格名稱,從 Oracle NoSQL Database 移轉表格。
下面是 Oracle NoSQL Database 表格範例:
{"id":20,"firstName":"Jane","lastName":"Smith","otherNames":[{"first":"Jane","last":"teacher"}],"age":25,"income":55000,"address":{"city":"San Jose","number":201,"phones":[{"area":608,"kind":"work","number":6538955},{"area":931,"kind":"home","number":9533341},{"area":931,"kind":"mobile","number":9533382}],"state":"CA","street":"Atlantic Ave","zip":95005},"connections":[40,75,63],"expenses":null}
{"id":10,"firstName":"John","lastName":"Smith","otherNames":[{"first":"Johny","last":"chef"}],"age":22,"income":45000,"address":{"city":"Santa Cruz","number":101,"phones":[{"area":408,"kind":"work","number":4538955},{"area":831,"kind":"home","number":7533341},{"area":831,"kind":"mobile","number":7533382}],"state":"CA","street":"Pacific Ave","zip":95008},"connections":[30,55,43],"expenses":null}
{"id":30,"firstName":"Adam","lastName":"Smith","otherNames":[{"first":"Adam","last":"handyman"}],"age":45,"income":75000,"address":{"city":"Houston","number":301,"phones":[{"area":618,"kind":"work","number":6618955},{"area":951,"kind":"home","number":9613341},{"area":981,"kind":"mobile","number":9613382}],"state":"TX","street":"Indian Ave","zip":95075},"connections":[60,45,73],"expenses":null}
來源組態範本
"source" : {
"type": "nosqldb",
"storeName" : "<store name>",
"helperHosts" : ["hostname1:port1","hostname2:port2,..."],
"table" : "<fully qualified table name>",
"queryFilter" : "<query predicate>",
"includeTTL": <true|false>,
"security" : "</path/to/store/security/file>",
"requestTimeoutMs" : 5000
}
來源 參數
通用組態參數
-
使用
"type" : "nosqldb" -
範例:
"security" : "/home/user/client.credentials"以密碼檔為基礎的認證安全檔案內容範例:
oracle.kv.password.noPrompt=true oracle.kv.auth.username=admin oracle.kv.auth.pwdfile.file=/home/nosql/login.passwd oracle.kv.transport=ssl oracle.kv.ssl.trustStore=/home/nosql/client.trust oracle.kv.ssl.protocols=TLSv 1.2 oracle.kv.ssl.hostnameVerifier=dnmatch(CN\=NoSQL)公事包式認證的安全檔案內容範例:
oracle.kv.password.noPrompt=true oracle.kv.auth.username=admin oracle.kv.auth.wallet.dir=/home/nosql/login.wallet oracle.kv.transport=ssl oracle.kv.ssl.trustStore=/home/nosql/client.trust oracle.kv.ssl.protocols=TLSv1.2 oracle.kv.ssl.hostnameVerifier=dnmatch(CN\=NoSQL) -
範例:
"requestTimeoutMs" : 5000
唯一組態參數
-
用途:Oracle NoSQL Database 存放區的名稱。
-
資料類型: 字串
-
必要 (Y/N): Y
-
範例:
"storeName" : "kvstore"
-
用途:
hostname:port格式的主機和登錄連接埠組清單。使用逗號分隔清單中的每個項目。您至少必須指定一個協助程式主機。 -
資料類型: 字串陣列
-
必要 (Y/N): Y
-
範例:
"helperHosts" : ["localhost:5000","localhost:6000"]
-
目的:用來移轉資料的完整表格名稱。
格式:
[namespace_name:]<table_name>如果表格位於 DEFAULT 命名空間中,您可以省略
namespace_name。表格必須存在於商店中。 -
資料類型: 字串
-
必要 (Y/N): Y
-
範例:
-
使用 DEFAULT 命名空間
"table" :"mytable" -
使用非預設的命名空間
"table" : "mynamespace:mytable" -
指定子項表格
"table" : "mytable.child"
-
-
用途:指定匯出 Oracle NoSQL Database 表格時,是否要包含表格資料列的 TTL 描述資料。如果設為 true,則資料列的 TTL 資料也會包含在來源提供的資料中。與每個資料列關聯的
_metadataJSON 物件中都有 TTL。自 UNIX 紀元 (1970 年 1 月 1 日) 起,每個資料列的到期時間會匯出為毫秒數。如果未指定此參數,則預設為
false。在匯出的資料列中,只有具有正到期值 TTL 的資料列才會納入。如果資料列未過期 (表示 TTL=0),則不會明確包含其 TTL 描述資料。例如,如果 ROW1 在 2021-10-19 00:00:00 到期,而 ROW2 未過期,則匯出的資料如下所示:
//ROW1 { "id" : 1, "name" : "abc", "_metadata" : { "expiration" : 1634601600000 } } //ROW2 { "id" : 2, "name" : "xyz" } -
資料類型:布林值
-
必要 (Y/N): N
-
範例:
"includeTTL" : true
-
用途:指定「移轉程式」公用程式用來僅匯出符合所提供條件之資料列的查詢述詞。
Migrator 公用程式會將此述詞併入 SQL 查詢的 WHERE 子句中。此查詢會套用至來源表格,以根據指定的條件篩選資料。若要指定來源表格,請使用來源組態樣板中的
table參數。例如,若只要匯出
id值為 10 的資料列,請將queryFilter參數設為"id=10"。Migrator 公用程式會產生下列查詢:select $row from <table> $row where id=10在此查詢中,Migrator 公用程式會使用表格別名
$row來處理個別資料列。請注意以下事項:
-
您不能使用
queryFilter來選取特定資料欄。您可以提供轉換來篩選資料欄。 -
如果您未提供
queryFilter參數的值,Migrator 公用程式會使用下列查詢從表格匯出所有資料列:select $row from $row
-
-
資料類型:JSON 字串
-
必要 (Y/N): N
-
範例:
"queryFilter" : "$row.address.city='Houston'"如需其他範例,請參閱下方的範例查詢述詞表格。
支援的運算式:
Migrator 公用程式支援查詢述詞中的下列表示式。如需詳細語法與範例,請參閱 SQL Reference Guide 。
Field step expressions
Map-filter step expressions
Array-filter step expressions
Array-slice step expressions
Arithmetic operators
Value comparison operators
Sequence comparison operators
Logical operators AND, OR and NOT
IS NULL and IS NOT NULL operators
IN operator
Regular expression
EXISTS operator
IS OF TYPE operator
CONCAT operator
CAST expression
Row functions
下表提供不同運算式與結果匯出資料的有效查詢述詞範例。
注意:
-
在查詢述詞中提供字串文字時,建議使用單引號 (') 而非雙引號 (") 。如果您想要使用雙引號 ("),則必須將其逸出。
例如:使用查詢述詞
"name='John'"從指定的表格中選取資料列,其中name欄位中的值為字串 'John'。 -
下列情況時,您必須在表示式中包含表格別名
$row:-
使用列函數,例如
modification_time(), expiration_time(), creation_time()等等。如需詳細資料,請參閱列函數。 -
存取 JSON 資料欄內的特定欄位。
-
表格 - 查詢述詞範例
| 查詢 / 述詞 | 匯出資料 |
|---|---|
| "ID=10" | 指定表格中 ID=10 的資料列。 |
| "name='John'" | 名稱為 'John' 之指定表格的資料列。 |
| 「age>30 和 gender='male'」 | 來自指定表格且 age 大於 30 且 gender = 'male' 的資料列。 |
| 」$row.address.state = 'CA' | address JSON 資料欄 = 'CA' 中具有 state 欄位之指定表格的資料列。您可以在此處使用述詞中的欄位步驟表示式,從 JSON 欄位存取必要的欄位值。 |
| 」$row.expenses.keys ($value > 1000) = 'food' | 來自指定表格的資料列,其中 expenses 類別 = 'food' 與 expenses 金額大於 1000。在這裡,您可以使用 map-filter 步驟表示式來選取欄位名稱 (索引鍵) 或對應 / 記錄欄位的欄位值。 |
| 」$row.expenses.keys ($value > $.clothes) = 'food' | 來自指定表格的資料列,其中 expenses 類別 = 'food' 與 expenses 金額大於 clothes 的支出。 |
| "[$row.address.phones[$element.area = 650].kind] = 'work'" | 來自指定表格的資料列,其中陣列中電話的區碼 = 650 且類型 = 'work'。此處使用 array-filter 步驟表示式,因為 address 欄位是 JSON 陣列。 |
| "[connections[$element > 100 and $pos < 10]] > 100" | 來自指定表格的資料列,最多 10 個連線和大於 100 的連線數目。在這裡,使用 array-filter 步驟表示式作為 connections 欄位是一個陣列。 |
| 「$row.income 為空值」 | 指定表格中沒有已知收入的資料列。如需詳細資訊,請參閱 IS NULL 和 IS NOT NULL 運算子。 |
| "a in (1, 5, 4) " | 指定表格的資料列,其中 a 是 1、5 或 4。有關詳細資訊,請參閱 IN 操作員。 |
| " (a, b) in ( (1, 'a') , (5, 'g') , (4, 't')) " | 來自指定表格的資料列,其中 (a 為 1 且 b 為 'a') OR (a 為 5 且 b 為 'g') OR (a 為 4 且 b 為 't')。 |
| "regex_like (name, 'j.*') " | 來自指定表格的資料列,其名稱開頭為 j。有關詳細資訊,請參閱一般表示式。 |
| 「EXISTS $row.person.address.zipcode」 | 來自指定表格的資料列,其中 person json 資料欄的位址為 zipcode。如需詳細資訊,請參閱存在操作員。 |
| 「$row.address 的類型為 (字串)」 | 來自指定表格的資料列,其中 address 資料欄為字串類型。如需詳細資訊,請參閱類型實例運算子。 |
| "lastLogin > CAST ('2022-10-01' AS TIMESTAMP) " | 指定表格中,2022 年 10 月 1 日之後上次登入的資料列。如需詳細資訊,請參閱轉換表示式。 |
| 「$row.connections[ ]= 任何 1」 | 來自指定表格的資料列,其 connections 陣列資料欄具有元素 1。如需詳細資訊,請參閱順序比較運算子。 |
| 」modification_time ($row) >= 2022-10-01'' | 來自於 2022 年 10 月 1 日或之後修改之指定表格的資料列。如需詳細資訊,請參閱列函數。 |
| "expiration_time_millis ($row) > 0" | 指定表格中未過期的資料列。如需詳細資訊,請參閱列函數。 |
Oracle NoSQL Database Cloud Service
Oracle NoSQL Database Cloud Service 作為 NoSQL Database Migrator 來源的組態檔格式如下所示。
您可以從 Oracle NoSQL Database Cloud Service 移轉表格,方法是指定表格位於來源組態樣板中之區間的名稱或 OCID。
下面是 Oracle NoSQL Database Cloud Service 表格的範例:
{"id":20,"firstName":"Jane","lastName":"Smith","otherNames":[{"first":"Jane","last":"teacher"}],"age":25,"income":55000,"address":{"city":"San Jose","number":201,"phones":[{"area":608,"kind":"work","number":6538955},{"area":931,"kind":"home","number":9533341},{"area":931,"kind":"mobile","number":9533382}],"state":"CA","street":"Atlantic Ave","zip":95005},"connections":[40,75,63],"expenses":null}
{"id":10,"firstName":"John","lastName":"Smith","otherNames":[{"first":"Johny","last":"chef"}],"age":22,"income":45000,"address":{"city":"Santa Cruz","number":101,"phones":[{"area":408,"kind":"work","number":4538955},{"area":831,"kind":"home","number":7533341},{"area":831,"kind":"mobile","number":7533382}],"state":"CA","street":"Pacific Ave","zip":95008},"connections":[30,55,43],"expenses":null}
{"id":30,"firstName":"Adam","lastName":"Smith","otherNames":[{"first":"Adam","last":"handyman"}],"age":45,"income":75000,"address":{"city":"Houston","number":301,"phones":[{"area":618,"kind":"work","number":6618955},{"area":951,"kind":"home","number":9613341},{"area":981,"kind":"mobile","number":9613382}],"state":"TX","street":"Indian Ave","zip":95075},"connections":[60,45,73],"expenses":null}
來源組態範本
"source" : {
"type" : "nosqldb_cloud",
"endpoint" : "<Oracle NoSQL Cloud Service endpoint URL or region ID>",
"table" : "<table name>",
"queryFilter" : "<query predicate>",
"compartment" : "<OCI compartment name or id>",
"credentials" : "<path/to/oci/credential/file>",
"credentialsProfile" : "<profile name in oci config file>",
"useInstancePrincipal" : <true|false>,
"useDelegationToken" : <true|false>,
"useSessionToken" : <true|false>,
"useOKEWorkloadIdentity" : <true|false>,
"readUnitsPercent" : <table readunits percent>,
"includeTTL": <true|false>,
"requestTimeoutMs" : <timeout in milli seconds>
}
來源 參數
通用組態參數
-
使用
"type" : "nosqldb_cloud" -
範例:
-
區域 ID:
"endpoint" : "us-ashburn-1" -
URL 格式:
"endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"
-
-
範例:
-
"credentials" : "/home/user/.oci/config" -
"credentials" : "/home/user/security/config"
-
-
範例:
-
"credentialsProfile" : "DEFAULT" -
"credentialsProfile" : "ADMIN_USER"
-
-
範例:
"useInstancePrincipal" : true -
範例:
"useDelegationToken" : true注意:只有從 Cloud Shell 執行 NoSQL 資料庫移轉程式時,才支援使用委派權杖的認證。
-
範例:
"useOKEWorkloadIdentity" : true -
範例:
"useSessionToken" : true -
範例:
"requestTimeoutMs" : 5000
唯一組態參數
-
用途:要從中移轉資料的表格名稱。
-
資料類型: 字串
-
必要 (Y/N): Y
-
範例:
-
若要指定表格
"table" : "myTable" -
指定子項表格
"table" : "mytable.child"
-
-
用途:指定表格所在之區間的名稱或 OCID。
若未提供任何值,會預設為 root 區間。
您可以在 OCI 雲端主控台中「治理」底下的「區間總管」視窗中,找到您區間的 OCID。
-
資料類型: 字串
-
必要 (Y/N): Y,如果表格不在租用戶的根區間中,或當 useInstancePrincipal 參數設為 true 時。
注意:如果 useInstancePrincipal 參數設為 true,則區間必須指定區間 OCID,而非名稱。
-
範例:
-
區間名稱
"compartment" : "mycompartment" -
區間名稱與其父項區間限定
"compartment" : "parent.childcompartment" -
未提供任何值。預設為根區間。
"compartment": "" -
區間 OCID
"compartment" : "ocid 1.tenancy.oc1...4ksd"
-
-
用途:移轉 NoSQL 表格時所要使用的表格讀取單位百分比。
預設值為 90。有效範圍是 1 到 100 之間的任何整數。移轉資料所需的時間與此屬性直接成比例。最好是增加移轉活動之表格的讀取傳輸量。您可以在移轉處理作業完成後減少讀取傳輸量。
若要瞭解傳輸量變更的每日限制,請參閱 Oracle NoSQL Database Cloud Service 文件中的 Cloud Limits 。
若要瞭解如何使用此屬性來提升資料移轉速度,請參閱疑難排解 Oracle NoSQL Database Migrator
-
資料類型:整數
-
必要 (Y/N): N
-
範例:
"readUnitsPercent" : 90
-
用途:指定在匯出 Oracle NoSQL Database Cloud Service 表格時,是否要包含表格資料列的 TTL 描述資料。如果設為 true,則資料列的 TTL 資料也會包含在來源提供的資料中。TTL 在與每個資料列關聯的
_metadataJSON 物件中。自 UNIX 紀元 (1970 年 1 月 1 日) 起,每個資料列的到期時間會匯出為毫秒數。如果未指定此參數,則預設為
false。在匯出的資料列中,只有具有正到期值 TTL 的資料列才會納入。如果資料列未過期 (表示 TTL=0),則不會明確包含其 TTL 描述資料。例如,如果 ROW1 在 2021-10-19 00:00:00 到期,而 ROW2 未過期,則匯出的資料如下所示:
//ROW1 { "id" : 1, "name" : "abc", "_metadata" : { "expiration" : 1634601600000 } } //ROW2 { "id" : 2, "name" : "xyz" } -
資料類型:布林值
-
必要 (Y/N): N
-
範例:
"includeTTL" : true
-
用途:指定「移轉程式」公用程式用來僅匯出符合所提供條件之資料列的查詢述詞。
Migrator 公用程式會將此述詞併入 SQL 查詢的 WHERE 子句中。此查詢會套用至來源表格,以根據指定的條件篩選資料。若要指定來源表格,請使用來源組態樣板中的
table參數。例如,若只要匯出
id值為 10 的資料列,請將queryFilter參數設為"id=10"。Migrator 公用程式會產生下列查詢:select $row from <table> $row where id=10在上述查詢中,Migrator 公用程式會使用表格別名
$row來處理個別資料列。請注意以下事項:
-
您無法使用
queryFilter來選取特定資料欄。您可以提供轉換來篩選資料欄。 -
如果您未提供
queryFilter參數的值,Migrator 公用程式會使用下列查詢從表格匯出所有資料列:select $row from $row`
-
-
資料類型:JSON 字串
-
必要 (Y/N): N
-
範例:
"queryFilter" : "$row.address.city='Houston'"如需其他範例,請參閱下方的範例查詢述詞表格。
支援的運算式:
Migrator 公用程式支援查詢述詞中的下列表示式。如需詳細語法與範例,請參閱 SQL Reference Guide 。
Field step expressions
Map-filter step expressions
Array-filter step expressions
Array-slice step expressions
Arithmetic operators
Value comparison operators
Sequence comparison operators
Logical operators AND, OR and NOT
IS NULL and IS NOT NULL operators
IN operator
Regular expression
EXISTS operator
IS OF TYPE operator
CONCAT operator
CAST expression
Row functions
下表提供不同運算式與結果匯出資料的有效查詢述詞範例。
注意:
-
在查詢述詞中提供字串文字時,建議使用單引號 (') 而非雙引號 (") 。如果您想要使用雙引號 ("),則必須將其逸出。
例如:使用查詢述詞
"name='John'"從指定的表格中選取資料列,其中name欄位中的值為字串 'John'。 -
下列情況時,您必須在表示式中包含表格別名
$row:- 使用列函數,例如
modification_time(), expiration_time(), creation_time()等等。如需詳細資料,請參閱列函數。 - 存取 JSON 資料欄內的特定欄位。
- 使用列函數,例如
表格 - 查詢述詞範例
| 查詢 / 述詞 | 匯出資料 |
|---|---|
| "ID=10" | 來自指定表格且 ID = 10 的資料列。 |
| "name='John'" | 名稱為 'John' 之指定表格的資料列。 |
| 「age>30 和 gender='male'」 | 來自指定表格且 age 大於 30 且 gender = 'male' 的資料列。 |
| 」$row.address.state = 'CA' | address JSON 資料欄 = 'CA' 中具有 state 欄位之指定表格的資料列。您可以在此處使用述詞中的欄位步驟表示式,從 JSON 欄位存取必要的欄位值。 |
| 」$row.expenses.keys ($value > 1000) = 'food' | 來自指定表格的資料列,其中 expenses 類別 = 'food' 與 expenses 金額大於 1000。在這裡,您可以使用 map-filter 步驟表示式來選取欄位名稱 (索引鍵) 或對應 / 記錄欄位的欄位值。 |
| 」$row.expenses.keys ($value > $.clothes) = 'food' | 來自指定表格的資料列,其中 expenses 類別 = 'food' 與 expenses 金額大於 clothes 的支出。 |
| "[$row.address.phones[$element.area = 650].kind] = 'work'" | 來自指定表格的資料列,其中陣列中電話的區碼 = 650 且類型 = 'work'。此處使用 array-filter 步驟表示式,因為 address 欄位是 JSON 陣列。 |
| "[connections[$element > 100 and $pos < 10]] > 100" | 來自指定表格的資料列,最多 10 個連線和大於 100 的連線數目。在這裡,使用 array-filter 步驟表示式作為 connections 欄位是一個陣列。 |
| 「$row.income 為空值」 | 指定表格中沒有已知收入的資料列。如需詳細資訊,請參閱 IS NULL 和 IS NOT NULL 運算子。 |
| "a in (1, 5, 4) " | 指定表格的資料列,其中 a 是 1、5 或 4。如需詳細資訊,請參閱 IN 操作員。 |
| " (a, b) in ( (1, 'a') , (5, 'g') , (4, 't')) " | 來自指定表格的資料列,其中 (a 為 1 且 b 為 'a') OR (a 為 5 且 b 為 'g') OR (a 為 4 且 b 為 't')。 |
| "regex_like (name, 'j.*') " | 來自指定表格的資料列,其名稱開頭為 j。如需詳細資訊,請參閱一般表示式。 |
| 「EXISTS $row.person.address.zipcode」 | 來自指定表格的資料列,其中 person json 資料欄的位址為 zipcode。如需詳細資訊,請參閱存在操作員。 |
| 「$row.address 的類型為 (字串)」 | 來自指定表格的資料列,其中 address 資料欄為字串類型。如需詳細資訊,請參閱類型實例運算子。 |
| "lastLogin > CAST ('2022-10-01' AS TIMESTAMP) " | 指定表格中,2022 年 10 月 1 日之後上次登入的資料列。如需詳細資訊,請參閱轉換表示式。 |
| 「$row.connections[ ]= 任何 1」 | 來自指定表格的資料列,其 connections 陣列資料欄具有元素 1。如需詳細資訊,請參閱順序比較運算子。 |
| 」modification_time ($row) >= 2022-10-01'' | 來自於 2022 年 10 月 1 日或之後修改之指定表格的資料列。如需詳細資訊,請參閱列函數。 |
| "expiration_time_millis ($row) > 0" | 指定表格中未過期的資料列。如需詳細資訊,請參閱列函數。 |
CSV 檔案來源
下方顯示 CSV 檔案作為 NoSQL 資料庫移轉程式來源的組態檔格式。CSV 檔案必須符合 RFC4180 格式。
您可以在來源組態範本中指定檔案名稱或目錄,以移轉 CSV 檔案或包含 CSV 資料的目錄。
範例 CSV 檔案如下:
1,"Computer Science","San Francisco","2500"
2,"Bio-Technology","Los Angeles","1200"
3,"Journalism","Las Vegas","1500"
4,"Telecommunication","San Francisco","2500"
來源組態範本
"source" : {
"type" : "file",
"format" : "csv",
"dataPath": "</path/to/a/csv/[file|dir]>",
"hasHeader" : <true | false>,
"columns" : ["column1", "column2", ....],
"csvOptions": {
"encoding": "<character set encoding>",
"trim": "<true | false>"
}
}
來源 參數
通用組態參數
唯一組態參數
-
用途:指定檔案或目錄的絕對路徑,其中包含要移轉的 CSV 資料。如果您指定目錄,NoSQL Database Migrator 會匯入該目錄中副檔名為
.csv或.CSV的所有檔案。所有 CSV 檔案都會複製到單一表格中,但不會以任何特定順序複製。CSV 檔案必須符合
RFC4180標準。您必須確定每個 CSV 檔案中的資料與接收器表格中定義的 NoSQL 資料庫表格綱要相符。不支援子目錄。 -
資料類型: 字串
-
必要 (Y/N): Y
-
範例:
-
指定 CSV 檔
"dataPath" : "/home/user/sample.csv" -
指定一個目錄
"dataPath" : "/home/user"
-
注意: CSV 檔案只能包含純量值。不支援匯入包含複雜類型的 CSV 檔案,例如 MAP、RECORD、ARRAY 和 JSON。NoSQL Database Migrator 工具不會檢查輸入 CSV 檔案中資料的正確性。「NoSQL 資料庫移轉程式」工具支援匯入符合 RFC4180 格式的 CSV 資料。包含不符合 RFC4180 標準之資料的 CSV 檔案可能無法正確複製,或會導致錯誤。如果輸入資料已損毀,NoSQL Database Migrator 工具將不會剖析 CSV 記錄。如果在移轉期間發生任何錯誤,NoSQL Database Migrator 工具會記錄失敗輸入記錄的相關資訊,以進行除錯和提供資訊。如需詳細資訊,請參閱使用 Oracle NoSQL 資料移轉器中的記錄移轉器進度。
-
用途:指定 CSV 檔案是否有標頭。如果設為
true,則會忽略第一行。如果設為false,則會將第一行視為 CSV 記錄。預設值為false。 -
資料類型:布林值
-
必要 (Y/N): N
-
範例:
"hasHeader" : "false"
-
用途:指定「NoSQL 資料庫」表格資料欄名稱的清單。資料欄名稱的順序代表 CSV 檔案欄位與對應之 NoSQL 資料庫表格資料欄的對應。如果輸入 CSV 檔案資料欄的順序與現有或新建立的 NoSQL 資料庫表格資料欄不相符,您可以使用此參數對應順序。此外,匯入具有識別資料欄的表格時,您可以略過
columns參數中的識別資料欄名稱。注意:
-
如果 NoSQL 資料庫表格有其他無法在 CSV 檔案中使用的資料欄,遺失的資料欄值就會更新為 NoSQL 資料庫表格中定義的預設值。若未提供預設值,則移轉期間會插入 Null 值。如需有關預設值的詳細資訊,請參閱 SQL Reference Guide 中的 Data Type Definitions 小節。
-
如果 CSV 檔案有其他未在 NoSQL 資料庫表格中定義的資料欄,則會忽略額外的資料欄資訊。
-
如果 CSV 記錄中的任何值是空的,就會將其設為 NoSQL 資料庫表格中對應資料欄的預設值。若未提供預設值,則移轉期間會插入 Null 值。
-
-
資料類型:字串陣列
-
必要 (Y/N): N
-
範例:
"columns" : ["table_column_1", "table_column_2"]
-
用途:指定 CSV 檔案的格式選項。提供 CSV 檔案的字元集編碼格式,並選擇是否要刪減空格。
-
資料類型:物件
-
必要 (Y/N): N
csvOptions.encoding - csvOptions 選項編碼
-
用途:指定用來解碼 CSV 檔案的字元集。預設值為
UTF-8。支援的字元集為US-ASCII, ISO-8859-1, UTF-8,和UTF-16。 -
資料類型: 字串
-
必要 (Y/N): N
-
範例:
"encoding" : "UTF-8"
-
用途:指定 CSV 欄位值的前置與尾端空白是否必須裁剪。預設值為
false。 -
資料類型:布林值
-
必要 (Y/N): N
-
範例:
"trim" : "true"
OCI 物件儲存的儲存桶中的 CSV 檔案
下方顯示 OCI 物件儲存的儲存桶中 CSV 檔案作為 NoSQL 資料庫移轉程式來源的組態檔格式。CSV 檔案必須符合 RFC4180 格式。
您可以在來源組態樣板中指定儲存桶的名稱,以移轉 OCI 物件儲存的儲存桶中的 CSV 檔案。
OCI Object Storage 貯體中的 CSV 檔案範例如下:
1,"Computer Science","San Francisco","2500"
2,"Bio-Technology","Los Angeles","1200"
3,"Journalism","Las Vegas","1500"
4,"Telecommunication","San Francisco","2500"
注意: OCI Object Storage 來源類型的有效接收器類型為 nosqldb 和 nosqldb_cloud。
來源組態範本
"source" : {
"type" : "object_storage_oci",
"format" : "csv",
"endpoint" : "<OCI Object Storage service endpoint URL or region ID>",
"namespace" : "<OCI Object Storage namespace>",
"bucket" : "<bucket name>",
"prefix" : "<object prefix>",
"credentials" : "</path/to/oci/config/file>",
"credentialsProfile" : "<profile name in oci config file>",
"useInstancePrincipal" : <true|false>,
"useDelegationToken" : <true|false>,
"useSessionToken" : <true|false>,
"useOKEWorkloadIdentity" : <true|false>,
"hasHeader" : <true | false>,
"columns" : ["column1", "column2", ....],
"csvOptions" : {
"encoding" : "<character set encoding>",
"trim" : <true | false>
}
}
來源 參數
通用組態參數
-
使用
"type" : "object_storage_oci" -
使用
"format" : "csv" -
endpoint 範例:
-
區域 ID:
"endpoint" : "us-ashburn-1" -
URL 格式:
"endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"
-
-
範例:
"namespace" : "my-namespace" -
範例:
"bucket" : "my-bucket"注意:
-
NoSQL 資料庫移轉器會匯入副檔名為 .
csv或.CSV的所有檔案,並以相同的順序將它們複製到單一表格中。 -
CSV 檔案只能包含純量值。不支援匯入包含複雜類型的 CSV 檔案,例如 MAP、RECORD、ARRAY 和 JSON。NoSQL Database Migrator 工具不會檢查輸入 CSV 檔案中資料的正確性。「NoSQL 資料庫移轉程式」工具支援匯入符合
RFC4180格式的 CSV 資料。包含不符合RFC4180標準之資料的 CSV 檔案可能無法正確複製,或會導致錯誤。如果輸入資料已損毀,NoSQL Database Migrator 工具將不會剖析 CSV 記錄。如果在移轉期間發生任何錯誤,NoSQL Database Migrator 工具會記錄失敗輸入記錄的相關資訊,以進行除錯和提供資訊。如需詳細資訊,請參閱使用 Oracle NoSQL 資料移轉器中的記錄移轉器進度。
-
-
範例:
-
"prefix" : "my_table/Data/000000.csv"(僅移轉000000.csv) -
"prefix" : "my_table/Data"(移轉前置碼為my_table/Data的所有物件)
-
-
範例:
-
"credentials" : "/home/user/.oci/config" -
"credentials" : "/home/user/security/config"
-
-
範例:
-
"credentialsProfile" : "DEFAULT" -
"credentialsProfile" : "ADMIN_USER"
-
-
範例:
"useInstancePrincipal" : true -
範例:
"useDelegationToken" : true注意:只有從 Cloud Shell 執行 NoSQL 資料庫移轉程式時,才支援使用委派權杖的認證。
-
範例:
"useOKEWorkloadIdentity" : true -
範例:
"useSessionToken" : true
唯一組態參數
-
用途:指定 CSV 檔案是否有標頭。如果設為
true,則會忽略第一行。如果設為false,則會將第一行視為 CSV 記錄。預設值為false。 -
資料類型:布林值
-
必要 (Y/N): N
-
範例:
"hasHeader" : "false"
-
用途:指定「NoSQL 資料庫」表格資料欄名稱的清單。資料欄名稱的順序代表 CSV 檔案欄位與對應之 NoSQL 資料庫表格資料欄的對應。如果輸入 CSV 檔案資料欄的順序與現有或新建立的 NoSQL 資料庫表格資料欄不相符,您可以使用此參數對應順序。此外,匯入具有識別資料欄的表格時,您可以略過
columns參數中的識別資料欄名稱。注意:
-
如果 NoSQL 資料庫表格有其他無法在 CSV 檔案中使用的資料欄,遺失的資料欄值就會更新為 NoSQL 資料庫表格中定義的預設值。若未提供預設值,則移轉期間會插入 Null 值。如需有關預設值的詳細資訊,請參閱 SQL Reference Guide 中的 Data Type Definitions 小節。
-
如果 CSV 檔案有其他未在 NoSQL 資料庫表格中定義的資料欄,則會忽略額外的資料欄資訊。
-
如果 CSV 記錄中的任何值是空的,就會將其設為 NoSQL 資料庫表格中對應資料欄的預設值。若未提供預設值,則移轉期間會插入 Null 值。
-
-
資料類型:字串陣列
-
必要 (Y/N): N
-
範例:
"columns" : ["table_column_1", "table_column_2"]
-
用途:指定 CSV 檔案的格式選項。提供 CSV 檔案的字元集編碼格式,並選擇是否要刪減空格。
-
資料類型:物件
-
必要 (Y/N): N
csvOptions.encoding - csvOptions 選項編碼
-
用途:指定用來解碼 CSV 檔案的字元集。預設值為
UTF-8。支援的字元集為US-ASCII, ISO-8859-1, UTF-8,和UTF-16。 -
資料類型: 字串
-
必要 (Y/N): N
-
範例:
"encoding" : "UTF-8"
-
用途:指定 CSV 欄位值的前置與尾端空白是否必須裁剪。預設值為
false。 -
資料類型:布林值
-
必要 (Y/N): N
-
範例:
"trim" : "true"
接收器組態樣板
瞭解每個有效接收器的接收器組態檔格式,以及每個組態參數的用途。
如需組態檔樣板的相關資訊,請參閱與 NoSQL 資料移轉器搭配使用的術語中的組態檔。
如需每個槽位之有效來源格式的詳細資訊,請參閱來源組態樣板。
主題
下列主題描述 Oracle NoSQL Database Migrator 所參照的接收組態樣板,將資料從有效的來源複製到指定的接收器。
-
指定的 JSON 檔案。
-
指定目錄中的 Parquet 檔案。
-
指定之 OCI 物件儲存的儲存桶中的 JSON 檔案。
-
指定之 OCI 物件儲存的儲存桶中的 Parquet 檔案。
-
Oracle NoSQL Database 中指定的表格。
-
Oracle NoSQL Database Cloud Service
Oracle NoSQL Database Cloud Service 中指定的表格。
JSON 檔案接收器
下面顯示 JSON 檔案作為 NoSQL 資料庫移轉器的槽的組態檔格式。
接收器組態樣板
"sink" : {
"type" : "file",
"format" : "json",
"dataPath": "</path/to/a/directory>",
"schemaPath" : "<path/to/a/file>",
"pretty" : <true|false>,
"useMultiFiles" : <true|false>,
"chunkSize" : <size in MB>
}
接收器參數
通用組態參數
-
使用
"type" : "file" -
使用
"format" : "json" -
範例:
"chunkSize" : 40注意:只有在 useMultiFiles 參數設為 true 時,才適用此參數。
唯一組態參數
-
用途:指定 NoSQL 資料庫移轉器以 JSON 格式複製來源資料的目錄路徑。
NoSQL 資料庫移轉器會在指定的目錄中建立 JSON 檔案。如果檔案存在,NoSQL Database Migrator 會以來源資料覆寫其內容。
請確定目錄已經存在,而且具備讀取和寫入權限。
-
資料類型: 字串
-
必要 (Y/N): Y
-
範例:
"dataPath" : "/home/user/data"移轉成功後,dataPath 參數中指定的目錄將包含匯出的檔案,如下列範例所示:
|--<Table_name>_1_5.json |--<Table_name>_6_10.json ...
-
用途:指定檔案的絕對路徑,以寫入來源提供的表格綱要資訊。
如果未定義這個值,來源綱要資訊將不會移轉至 sink。如果指定此值,移轉程式公用程式會將來源表格的綱要寫入此處指定的檔案。
綱要資訊會在此檔案中的每一行寫入為一個 DDL 命令。如果檔案不存在於指定的資料路徑中,NoSQL Database Migrator 會建立該檔案。若已存在,NoSQL 資料庫移轉程式會將其內容覆寫為來源資料。您必須確定資料路徑中的父項目錄對指定的檔案有效。
-
資料類型: 字串
-
必要 (Y/N): N
-
範例:
"schemaPath" : "/home/user/schema_file"
-
用途:指定是否美化 JSON 輸出以提高可讀性。
如果未指定,預設為 false。
-
資料類型:布林值
-
必要 (Y/N): N
-
範例:
"pretty" : true
-
用途:指定在將 NoSQL 資料庫表格資料移轉至目錄時,是否要進一步將匯出的檔案 (建立於 dataPath 參數中指定的目錄底下) 分割成特定大小的多個子檔案。useMultiFiles 參數預設為 true。
NoSQL 資料庫移轉程式在匯出資料時,將 NoSQL 資料庫表格資料分割成多個檔案。如果 useMultiFiles 參數設為 true,則每個匯出的檔案會進一步分割為 chunkSize 參數中指定之大小的子檔案。
範例:成功移轉之後,dataPath 參數中指定的目錄將會包含匯出的檔案,如下列範例所示:
|--<Table_name>_1_5_0.json |--<Table_name>_1_5_1.json |--<Table_name>_6_10_0.json |--<Table_name>_6_10_1.json |--<Table_name>_6_10_2.json ... -
資料類型:布林值
-
必要 (Y/N): N
-
範例:
"useMultiFiles" : true
Parquet 檔案
下方顯示 Parquet 檔案作為 NoSQL 資料庫移轉器的組態檔格式。
接收器組態樣板
"sink" : {
"type" : "file",
"format" : "parquet",
"dataPath": "</path/to/a/dir>",
"chunkSize" : <size in MB>,
"compression": "<SNAPPY|GZIP|NONE>",
"parquetOptions": {
"useLogicalJson": <true|false>,
"useLogicalEnum": <true|false>,
"useLogicalUUID": <true|false>,
"truncateDoubleSpecials": <true|false>
}
}
接收器參數
通用組態參數
唯一組態參數
-
用途:指定儲存移轉之 NoSQL 表格資料的目錄路徑。請確定目錄已經存在,而且具備讀取和寫入權限。
-
資料類型: 字串
-
必要 (Y/N): Y
-
範例:
"dataPath" : "/home/user/migrator/my_table"
-
用途:指定用來壓縮 Parquet 資料的壓縮類型。有效值為 SNAPPY 、 GZIP 和 NONE 。
若未指定,預設為 SNAPPY 。
-
資料類型: 字串
-
必要 (Y/N): N
-
範例:
"compression" : "GZIP"
-
用途:指定選取 NoSQL ENUM、JSON 和 UUID 資料欄之 Parquet 邏輯類型的選項。
若未指定此參數,NoSQL 資料庫移轉程式會將 ENUM、JSON 和 UUID 資料欄的資料寫入為字串。
-
資料類型:物件
-
必要 (Y/N): N
-
用途:指定是否要將 NoSQL JSON 資料欄資料寫入為 Parquet 邏輯 JSON 類型。如需詳細資訊,請參閱宴會邏輯類型定義。
若未指定或設為 false,NoSQL 資料庫移轉程式會將 NoSQL JSON 資料欄資料寫入為字串。
-
資料類型:布林值
-
必要 (Y/N): N
-
範例:
"useLogicalJson" : true
-
用途:指定是否要將 NoSQL ENUM 資料欄資料寫入為 Parquet 邏輯 ENUM 類型。如需詳細資訊,請參閱宴會邏輯類型定義。
若未指定或設為 False,NoSQL 資料庫移轉程式會將 NoSQL ENUM 資料欄資料寫入為字串。
-
資料類型:布林值
-
必要 (Y/N): N
-
範例:
"useLogicalEnum" : true
-
用途:指定是否要將 NoSQL UUID 資料欄資料寫入為 Parquet 邏輯 UUID 類型。如需詳細資訊,請參閱宴會邏輯類型定義。
若未指定或設為 false,NoSQL 資料庫移轉程式會將 NoSQL UUID 資料欄資料寫入為字串。
-
資料類型:布林值
-
必要 (Y/N): N
-
範例:
"useLogicalUUID" : true
parquetOptions.truncateDoubleSpecials
-
用途:指定是否截斷雙 +Infinity、-Infinity 及 NaN 值。
依預設,它會設為
false。若設為true,-
Positive_Infinity 已截斷為 Double.MAX_VALUE。
-
NEGATIVE_INFINITY 已被截斷為 -Double.MAX_VALUE。
-
NaN 已截斷為 9.9999999999999990E307。
-
-
資料類型:布林值
-
必要 (Y/N): N
-
範例:
"truncateDoubleSpecials" : true
OCI 物件儲存的儲存桶中的 JSON 檔案
下方顯示 OCI 物件儲存的儲存桶中 JSON 檔案作為 NoSQL 資料庫移轉器的槽位的組態檔格式。
注意: OCI 物件儲存作為接收器的有效來源類型為 nosqldb 和 nosqldb_cloud。
接收器組態樣板
"sink" : {
"type" : "object_storage_oci",
"format" : "json",
"endpoint" : "<OCI Object Storage service endpoint URL or region ID>",
"namespace" : "<OCI Object Storage namespace>",
"bucket" : "<bucket name>",
"prefix" : "<object prefix>",
"chunkSize" : <size in MB>,
"pretty" : <true|false>,
"credentials" : "</path/to/oci/config/file>",
"credentialsProfile" : "<profile name in oci config file>",
"useInstancePrincipal" : <true|false>,
"useDelegationToken" : <true|false>,
"useSessionToken" : <true|false>,
"useOKEWorkloadIdentity" : <true|false>
}
接收器參數
通用組態參數
-
使用
"type" : "object_storage_oci" -
使用
"format" : "json" -
範例:
-
區域 ID:
"endpoint" : "us-ashburn-1" -
URL 格式:
"endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"
-
-
範例:
"namespace" : "my-namespace" -
範例:
"bucket" : "my-bucket" -
綱要會移轉至
<prefix>/Schema/schema.ddl檔案,來源資料會移轉至<prefix>/Data/<chunk>.json檔案,其中 chunk=000000.json、000001.json 等等。範例:
-
"prefix" : "my_export" -
"prefix" : "my_export/2021-04-05/"
-
-
範例:
"chunkSize" : 40 -
範例:
-
"credentials" : "/home/user/.oci/config" -
"credentials" : "/home/user/security/config"
-
- credentialsProfile 範例:
-
"credentialsProfile" : "DEFAULT" -
"credentialsProfile" : "ADMIN_USER"
-
-
範例:
"useInstancePrincipal" : true -
範例:
"useDelegationToken" : true注意:只有從 Cloud Shell 執行 NoSQL 資料庫移轉程式時,才支援使用委派權杖的認證。
-
範例:
"useOKEWorkloadIdentity" : true -
範例:
"useSessionToken" : true
唯一組態參數
pretty
-
用途:指定是否美化 JSON 輸出以提高可讀性。
如果未指定,預設為 false。
-
資料類型:布林值
-
必要 (Y/N): N
-
範例:
"pretty" : true
OCI 物件儲存的儲存桶中的 Parquet 檔案
OCI 物件儲存的儲存桶中作為 NoSQL 資料庫移轉器的 Parquet 檔案組態檔格式如下所示。
注意: OCI Object Storage 來源類型的有效來源類型為 nosqldb 和 nosqldb_cloud。
接收器組態樣板
"sink" : {
"type" : "object_storage_oci",
"format" : "parquet",
"endpoint" : "<OCI Object Storage service endpoint URL or region ID>",
"namespace" : "<OCI Object Storage namespace>",
"bucket" : "<bucket name>",
"prefix" : "<object prefix>",
"chunkSize" : <size in MB>,
"compression": "<SNAPPY|GZIP|NONE>",
"parquetOptions": {
"useLogicalJson": <true|false>,
"useLogicalEnum": <true|false>,
"useLogicalUUID": <true|false>,
"truncateDoubleSpecials": <true|false>
},
"credentials" : "</path/to/oci/config/file>",
"credentialsProfile" : "<profile name in oci config file>",
"useInstancePrincipal" : <true|false>,
"useDelegationToken" : <true|false>,
"useSessionToken" : <true|false>,
"useOKEWorkloadIdentity" : <true|false>
}
接收器參數
通用組態參數
-
使用
"type" : "object_storage_oci" -
使用
"format" : "parquet" -
範例:
-
區域 ID:
"endpoint" : "us-ashburn-1" -
URL 格式:
"endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"
-
-
範例:
"namespace" : "my-namespace" -
範例:
"bucket" : "my-bucket" -
來源資料會移轉至
<prefix>/Data/<chunk>.parquet檔案,其中 chunk=000000.parquet、000001.parquet 等等。範例:
-
"prefix" : "my_export" -
"prefix" : "my_export/2021-04-05/"
-
-
範例:
"chunkSize" : 40 -
範例:
-
"credentials" : "/home/user/.oci/config" -
"credentials" : "/home/user/security/config"
-
-
範例:
-
"credentialsProfile" : "DEFAULT" -
"credentialsProfile" : "ADMIN_USER"
-
-
範例:
"useInstancePrincipal" : true -
範例:
"useDelegationToken" : true注意:只有從 Cloud Shell 執行 NoSQL 資料庫移轉程式時,才支援使用委派權杖的認證。
-
範例:
"useOKEWorkloadIdentity" : true -
範例:
"useSessionToken" : true
唯一組態參數
-
用途:指定用來壓縮 Parquet 資料的壓縮類型。有效值為 SNAPPY 、 GZIP 和 NONE 。
若未指定,預設為 SNAPPY 。
-
資料類型: 字串
-
必要 (Y/N): N
-
範例:
"compression" : "GZIP"
-
用途:指定選取 NoSQL ENUM、JSON 和 UUID 資料欄之 Parquet 邏輯類型的選項。
若未指定此參數,NoSQL 資料庫移轉程式會將 ENUM、JSON 和 UUID 資料欄的資料寫入為字串。
-
資料類型:物件
-
必要 (Y/N): N
-
用途:指定是否要將 NoSQL JSON 資料欄資料寫入為 Parquet 邏輯 JSON 類型。如需詳細資訊,請參閱宴會邏輯類型定義。
若未指定或設為 false,NoSQL 資料庫移轉程式會將 NoSQL JSON 資料欄資料寫入為字串。
-
資料類型:布林值
-
必要 (Y/N): N
-
範例:
"useLogicalJson" : true
-
用途:指定是否要將 NoSQL ENUM 資料欄資料寫入為 Parquet 邏輯 ENUM 類型。如需詳細資訊,請參閱宴會邏輯類型定義。
若未指定或設為 False,NoSQL 資料庫移轉程式會將 NoSQL ENUM 資料欄資料寫入為字串。
-
資料類型:布林值
-
必要 (Y/N): N
-
範例:
"useLogicalEnum" : true
-
用途:指定是否要將 NoSQL UUID 資料欄資料寫入為 Parquet 邏輯 UUID 類型。如需詳細資訊,請參閱宴會邏輯類型定義。
若未指定或設為 false,NoSQL 資料庫移轉程式會將 NoSQL UUID 資料欄資料寫入為字串。
-
資料類型:布林值
-
必要 (Y/N): N
-
範例:
"useLogicalUUID" : true
parquetOptions.truncateDoubleSpecials
-
用途:指定是否截斷雙 +Infinity、-Infinity 及 NaN 值。
依預設,它會設為
false。若設為true,-
Positive_Infinity 已截斷為 Double.MAX_VALUE。
-
NEGATIVE_INFINITY 已被截斷為 -Double.MAX_VALUE。
-
NaN 已截斷為 9.9999999999999990E307。
-
-
資料類型:布林值
-
必要 (Y/N): N
-
範例:
"truncateDoubleSpecials" : true
Oracle NoSQL Database
下方顯示 Oracle NoSQL Database 作為 NoSQL Database Migrator 之槽的組態檔格式。
接收器組態樣板
"sink" : {
"type": "nosqldb",
"storeName" : "<store name>",
"helperHosts" : ["hostname1:port1","hostname2:port2,..."],
"security" : "</path/to/store/credentials/file>",
"table" : "<fully qualified table name>",
"includeTTL": <true|false>,
"ttlRelativeDate": "<date-to-use in UTC>",
"schemaInfo" : {
"schemaPath" : "</path/to/a/schema/file>",
"defaultSchema" : <true|false>,
"useSourceSchema" : <true|false>,
"DDBPartitionKey" : <"name:type">,
"DDBSortKey" : "<name:type>"
},
"overwrite" : <true|false>,
"requestTimeoutMs" : <timeout in milli seconds>
}
接收器參數
通用組態參數
-
使用
"type" : "nosqldb" -
範例:
"security" : "/home/user/client.credentials"以密碼檔為基礎的認證安全檔案內容範例:
oracle.kv.password.noPrompt=true oracle.kv.auth.username=admin oracle.kv.auth.pwdfile.file=/home/nosql/login.passwd oracle.kv.transport=ssl oracle.kv.ssl.trustStore=/home/nosql/client.trust oracle.kv.ssl.protocols=TLSv1.2 oracle.kv.ssl.hostnameVerifier=dnmatch(CN\=NoSQL)公事包式認證的安全檔案內容範例:
oracle.kv.password.noPrompt=true oracle.kv.auth.username=admin oracle.kv.auth.wallet.dir=/home/nosql/login.wallet oracle.kv.transport=ssl oracle.kv.ssl.trustStore=/home/nosql/client.trust oracle.kv.ssl.protocols=TLSv1.2 oracle.kv.ssl.hostnameVerifier=dnmatch(CN\=NoSQL) -
範例:
"requestTimeoutMs" : 5000
唯一組態參數
-
用途:Oracle NoSQL Database 存放區的名稱。
-
資料類型: 字串
-
必要 (Y/N): Y
-
範例:
"storeName" : "kvstore"
-
用途:
hostname:port格式的主機和登錄連接埠組清單。使用逗號分隔清單中的每個項目。您至少必須指定一個協助程式主機。 -
資料類型: 字串陣列
-
必要 (Y/N): Y
-
範例:
"helperHosts" : ["localhost:5000","localhost:6000"]
-
用途:指定儲存已移轉資料的表格名稱。
格式:
[namespace_name:]<table_name>如果表格位於 DEFAULT 命名空間中,您可以省略
namespace_name。移轉期間,表格必須存在於存放區中,且其綱要必須與來源資料相符。如果接收器中沒有表格,您可以使用
schemaInfo參數來指示 NoSQL 資料庫移轉器在接收器中建立表格。 -
資料類型: 字串
-
必要 (Y/N): Y
-
範例:
-
使用 DEFAULT 命名空間
"table" :"mytable" -
使用非預設的命名空間
"table" : "mynamespace:mytable" -
指定子項表格
"table" : "mytable.child"
注意:您可以將子項表格從有效資料來源移轉至 Oracle NoSQL Database。NoSQL 資料庫移轉器會在每次執行時只複製單一表格。確定父項表格已在子項表格之前移轉。
-
-
用途:指定匯入 Oracle NoSQL Database 表格時,是否包含來源所提供之表格資料列的 TTL 描述資料。
如果未指定此參數,則預設為
false。在這種情況下,匯入 Oracle NoSQL Database 表格時,NoSQL Database Migrator 不包括來源提供之表格資料列的 TTL 描述資料。如果設為 true,匯入表格資料列時,「NoSQL 資料庫移轉程式」工具會對 TTL 描述資料執行下列檢查:
-
如果您匯入沒有
_metadata定義的資料列,NoSQL 資料庫移轉程式工具會將 TTL 設為 0,這表示該資料列永不過期。 -
如果您匯入具有
_metadata定義的資料列,則「NoSQL 資料庫移轉程式」工具會在匯入資料列時,將 TTL 值與「參照時間」做比較。如果資料列相對於「參照時間」已過期,則會略過該資料列。如果資料列尚未過期,則會與 TTL 值一起匯入。依照預設,匯入作業的「參照時間」是從執行 NoSQL 資料庫移轉程式工具之機器的 System.currentTimeMillis() 取得的目前時間 (毫秒)。但如果您想要延長過期時間,並匯入會立即到期的資料列,也可以使用ttlRelativeDate組態參數設定自訂的「參照時間」。計算資料列到期時間的公式如下:
expiration = (TTL value of source row in milliseconds - Reference Time in milliseconds) if (expiration <= 0) then it indicates that row has expired.
注意:由於 Oracle NoSQL TTL 界限是以小時和天為單位,因此在某些情況下,匯入資料列的 TTL 可能會調整為最接近的小時或天。例如,假設具有
1629709200000 (2021-08-23 09:00:00)到期值的資料列,而「參照時間」值為1629707962582 (2021-08-23 08:39:22)。在此,即使資料列相對於匯入此資料時的「參照時間」沒有到期,資料列的新 TTL 也是1629712800000 (2021-08-23 10:00:00)。 -
-
資料類型:布林值
-
必要 (Y/N): N
-
範例:
"includeTTL" : true
-
目的:以 YYYY-MM-DD hh:mm:ss 格式指定 UTC 日期,用來在匯入 Oracle NoSQL Database 時設定表格資料列的 TTL 到期。
如果您匯出資料中的表格資料列已過期,您可以將 ttlRelativeDate 參數設為在匯出資料中表格資料列的過期時間之前的日期。
如果您未指定此參數,預設為執行 NoSQL Database Migrator 工具之機器的目前時間 (毫秒),從 System.currentTimeMillis() 取得。
-
資料類型:日期
-
必要 (Y/N): N
-
範例:
"ttlRelativeDate" : "2021-01-03 04:31:17"讓我們考量表格資料列在 2021 年 1 月 1 日 7 天後到期的情況。匯出此表格之後,在 2021 年 1 月 7 日執行表格問題,並決定匯入資料。表格資料列將在一天內到期 (資料到期日減去
ttlRelativedate組態參數的預設值,即目前日期)。但如果您要將表格資料列的到期日延長至 5 天而不是 1 天,請使用ttlRelativeDate參數並選擇較早的日期。因此,在此案例中,如果您要將表格資料列的到期時間延長 5 天,請將ttlRelativeDate組態參數的值設為 2021 年 1 月 3 日,當表格資料列匯入時,此參數會用來作為「參照時間」。
-
目的:指定要移轉之資料的綱要。如果未指定,NoSQL Database Migrator 會假設 sink 的存放區中已經有該表格。
-
資料類型:物件
-
必要 (Y/N): N
-
用途:指定包含 NoSQL 表格之 DDL 敘述句之檔案的絕對路徑。
「NoSQL 資料庫移轉程式」會先執行此檔案中所列的 DDL 命令,再移轉資料。
NoSQL 資料庫移轉器在
schemaPath檔案的每一行不支援一個以上的 DDL 敘述句。 -
資料類型: 字串
-
必要 (Y/N): N
注意:
defaultSchema和schemaPath互斥。 -
範例:
"schemaPath" : "/home/user/schema_file"
-
用途:將此參數設為 true 會指示 NoSQL 資料庫移轉器建立具有預設綱要的表格。預設綱要是由移轉程式本身所定義。如需有關預設綱要定義的詳細資訊,請參閱使用 Oracle NoSQL 資料移轉器中的預設綱要。
-
資料類型:布林值
-
必要 (Y/N): N
注意:
defaultSchema和schemaPath互斥。
-
用途:指定在移轉 NoSQL 表格時,接收器是否使用來源所提供的表格綱要定義。
-
資料類型:布林值
-
必要 (Y/N): N
注意: defaultSchema、schemaPath 以及 useSourceSchema 參數互斥。請只指定其中一個參數。
-
範例:
-
使用預設綱要:
"schemaInfo" : { "defaultSchema" : true } -
使用預先定義的綱要:
"schemaInfo" : { "schemaPath" : "<complete/path/to/the/schema/definition/file>" } -
使用來源綱要:
"schemaInfo" : { "useSourceSchema" : true }
-
-
用途:指定要在接收器 Oracle NoSQL Database 表格中使用的 DynamoDB 分割區索引鍵和對應的 Oracle NoSQL Database 類型。此金鑰將作為 NoSQL 資料庫表格分區金鑰。只有在
defaultSchema設為 true 且來源格式為dynamodb_json時才適用。請參閱將 DynamoDB 類型對應至 Oracle NoSQL 類型以取得詳細資訊。 -
必要 (Y/N): Y,如果
defaultSchema為 true 且來源為dynamodb_json。 -
範例:
"DDBPartitionKey" : "PersonID:INTEGER"注意:如果分割區索引鍵包含虛線 (-) 或點號 (.),移轉程式將會以底線 (_) 取代,因為 NoSQL 資料欄名稱不支援點和虛線。
-
用途:指定要在目標 Oracle NoSQL Database 表格中使用的 DynamoDB 排序索引鍵及其對應的 Oracle NoSQL Database 類型。如果匯入 DynamoDB 表格沒有排序索引鍵,則不得設定此屬性。此索引鍵將作為 NoSQL 資料庫表格中主索引鍵的非分區部分。只有在
defaultSchema設為 true 且來源為dynamodb_json時才適用。請參閱將 DynamoDB 類型對應至 Oracle NoSQL 類型以取得詳細資訊。 -
必要 (Y/N): N
-
範例:
"DDBSortKey" : "Skey:STRING"注意:如果排序索引鍵包含虛線 (-) 或點 (.),則移轉程式會以底線 (_) 取代,因為 NoSQL 資料欄名稱不支援點和虛線。
-
用途:指出從來源移轉的記錄已存在於接收器中時,NoSQL 資料庫移轉器的行為。
如果值設為 false,則在移轉表格時,「NoSQL 資料庫移轉程式」會略過接收器中已有相同主索引鍵的記錄。
如果值設為 true,則移轉表格時,NoSQL 資料庫移轉程式會覆寫接收器中已有相同主索引鍵的記錄。
若未指定,預設為 true。
-
資料類型:布林值
-
必要 (Y/N): N
-
範例:
"overwrite" : false
Oracle NoSQL Database Cloud Service
下方顯示 Oracle NoSQL Database Cloud Service 作為 NoSQL Database Migrator 範圍的組態檔格式。
接收器組態樣板
"sink" : {
"type" : "nosqldb_cloud",
"endpoint" : "<Oracle NoSQL Cloud Service Endpoint>",
"table" : "<table name>",
"compartment" : "<OCI compartment name or id>",
"includeTTL": <true|false>,
"ttlRelativeDate" : "<date-to-use in UTC>",
"schemaInfo" : {
"schemaPath" : "</path/to/a/schema/file>",
"defaultSchema" : <true|false>,
"useSourceSchema" : <true|false>,
"DDBPartitionKey" : <"name:type">,
"DDBSortKey" : "<name:type>",
"onDemandThroughput" : <true|false>,
"readUnits" : <table read units>,
"writeUnits" : <table write units>,
"storageSize" : <storage size in GB>
},
"credentials" : "</path/to/oci/credential/file>",
"credentialsProfile" : "<profile name in oci config file>",
"useInstancePrincipal" : <true|false>,
"useDelegationToken" : <true|false>,
"useSessionToken" : <true|false>,
"useOKEWorkloadIdentity" : <true|false>,
"writeUnitsPercent" : <table writeunits percent>,
"requestTimeoutMs" : <timeout in milli seconds>,
"overwrite" : <true|false>
}
接收器參數
通用組態參數
-
使用
"type" : "nosqldb_cloud" -
範例:
-
區域 ID:
"endpoint" : "us-ashburn-1" -
URL 格式:
"endpoint" : "https://objectstorage.us-ashburn-1.oraclecloud.com"
-
-
範例:
-
"credentials" : "/home/user/.oci/config" -
"credentials" : "/home/user/security/config"
-
-
範例:
-
"credentialsProfile" : "DEFAULT" -
"credentialsProfile" : "ADMIN_USER"
-
-
範例:
"useInstancePrincipal" : true -
範例:
"useDelegationToken" : true注意:只有從 Cloud Shell 執行 NoSQL 資料庫移轉程式時,才支援使用委派權杖的認證。
-
範例:
"useOKEWorkloadIdentity" : true -
範例:
"useSessionToken" : true -
範例:
"requestTimeoutMs" : 5000
唯一組態參數
-
用途:指定儲存已移轉資料的表格名稱。
您必須確定此表格存在於您的 Oracle NoSQL Database Cloud Service 中。否則,您必須使用接收器組態中的
schemaInfo物件來指示 NoSQL 資料庫移轉器建立表格。此表格的綱要必須與來源資料相符。
-
資料類型: 字串
-
必要 (Y/N): Y
-
範例:
-
若要指定表格
"table" : "mytable" -
指定子項表格
"table" : "mytable.child"
注意:您可以將子項表格從有效資料來源移轉至 Oracle NoSQL Database Cloud Service。NoSQL 資料庫移轉器會在每次執行時只複製單一表格。確定父項表格已在子項表格之前移轉。
-
-
用途:指定表格所在之區間的名稱或 OCID。
若未提供任何值,會預設為 root 區間。
您可以在 OCI 雲端主控台中「治理」底下的「區間總管」視窗中,找到您區間的 OCID。
-
資料類型: 字串
-
必要 (Y/N): Y,如果表格不在租用戶的根區間中,或當 useInstancePrincipal 參數設為 true 時。
注意:如果 useInstancePrincipal 參數設為 true,則區間必須指定區間 OCID,而非名稱。
-
範例:
-
區間名稱
"compartment" : "mycompartment" -
區間名稱與其父項區間限定
"compartment" : "parent.childcompartment" -
未提供任何值。預設為根區間。
"compartment": "" -
區間 OCID
"compartment" : "ocid1.tenancy.oc1...4ksd"
-
-
用途:指定匯入 Oracle NoSQL Database 表格時,是否包含來源所提供之表格資料列的 TTL 描述資料。
如果未指定此參數,則預設為
false。在這種情況下,匯入 Oracle NoSQL Database 表格時,NoSQL Database Migrator 不包括來源提供之表格資料列的 TTL 描述資料。如果設為 true,匯入表格資料列時,「NoSQL 資料庫移轉程式」工具會對 TTL 描述資料執行下列檢查:
-
如果您匯入沒有
_metadata定義的資料列,NoSQL 資料庫移轉程式工具會將 TTL 設為 0,這表示該資料列永不過期。 -
如果您匯入具有
_metadata定義的資料列,則「NoSQL 資料庫移轉程式」工具會在匯入資料列時,將 TTL 值與「參照時間」做比較。如果資料列相對於「參照時間」已過期,則會略過該資料列。如果資料列尚未過期,則會與 TTL 值一起匯入。依照預設,匯入作業的「參照時間」是從執行 NoSQL 資料庫移轉程式工具之機器的 System.currentTimeMillis() 取得的目前時間 (毫秒)。但如果您想要延長過期時間,並匯入會立即到期的資料列,也可以使用ttlRelativeDate組態參數設定自訂的「參照時間」。計算資料列到期時間的公式如下:
expiration = (TTL value of source row in milliseconds - Reference Time in milliseconds) if (expiration <= 0) then it indicates that row has expired.
注意:由於 Oracle NoSQL TTL 界限是以小時和天為單位,因此在某些情況下,匯入資料列的 TTL 可能會調整為最接近的小時或天。例如,假設具有
1629709200000 (2021-08-23 09:00:00)到期值的資料列,而「參照時間」值為1629707962582 (2021-08-23 08:39:22)。在此,即使資料列相對於匯入此資料時的「參照時間」沒有到期,資料列的新 TTL 也是1629712800000 (2021-08-23 10:00:00)。 -
-
資料類型:布林值
-
必要 (Y/N): N
-
範例:
"includeTTL" : true
-
目的:以 YYYY-MM-DD hh:mm:ss 格式指定 UTC 日期,用來在匯入 Oracle NoSQL Database 時設定表格資料列的 TTL 到期。
如果匯出資料中的表格資料列已過期,您可以將
ttlRelativeDate參數設為匯出資料中表格資料列過期時間之前的日期。如果您未指定此參數,預設為執行 NoSQL Database Migrator 工具之機器的目前時間 (毫秒),從 System.currentTimeMillis() 取得。
-
資料類型:日期
-
必要 (Y/N): N
-
範例:
"ttlRelativeDate" : "2021-01-03 04:31:17"讓我們考量表格資料列在 2021 年 1 月 1 日 7 天後到期的情況。匯出此表格之後,在 2021 年 1 月 7 日執行表格問題,並決定匯入資料。表格資料列將在一天內到期 (資料到期日減去
ttlRelativedate組態參數的預設值,即目前日期)。但如果您要將表格資料列的到期日延長至 5 天而不是 1 天,請使用ttlRelativeDate參數並選擇較早的日期。因此,在此案例中,如果您要將表格資料列的到期時間延長 5 天,請將ttlRelativeDate組態參數的值設為 2021 年 1 月 3 日,當表格資料列匯入時,此參數會用來作為「參照時間」。
-
目的:指定要移轉之資料的綱要。
如果您未指定此參數,NoSQL Database Migrator 會假設您的 Oracle NoSQL Database Cloud Service 中已有該表格。
如果未指定此參數,且 sink 中沒有該表格,則移轉會失敗。
-
資料類型:物件
-
必要 (Y/N): N
-
用途:指定包含 NoSQL 表格之 DDL 敘述句之檔案的絕對路徑。
「NoSQL 資料庫移轉程式」會先執行此檔案中所列的 DDL 命令,再移轉資料。
NoSQL 資料庫移轉器在
schemaPath檔案的每一行不支援一個以上的 DDL 敘述句。 -
資料類型: 字串
-
必要 (Y/N): N
注意:defaultSchema 和 schemaPath 互斥。
- 範例:
"schemaPath" : "/home/user/schema_file"
-
用途:將此參數設為是,會指示 NoSQL 資料庫移轉程式建立具有預設綱要的表格。預設綱要是由移轉程式本身所定義。如需有關預設綱要定義的詳細資訊,請參閱使用 Oracle NoSQL 資料移轉器中的預設綱要。
-
資料類型:布林值
-
必要 (Y/N): N
注意:
defaultSchema和schemaPath互斥。
-
用途:指定在移轉 NoSQL 表格時,接收器是否使用來源所提供的表格綱要定義。
-
資料類型:布林值
-
必要 (Y/N): N
注意: defaultSchema、schemaPath 以及 useSourceSchema 參數互斥。請只指定其中一個參數。
-
範例:
-
使用預設綱要:
"schemaInfo": { "defaultSchema": true, "readUnits": 100, "writeUnits": 60, "storageSize": 1 } -
使用預先定義的綱要:
"schemaInfo": { "schemaPath": "<complete/path/to/the/schema/definition/file>", "readUnits": 100, "writeUnits": 100, "storageSize": 1 } -
使用來源綱要:
"schemaInfo": { "useSourceSchema": true, "readUnits": 100, "writeUnits": 60, "storageSize": 1 }
-
-
用途:指定要在接收器 Oracle NoSQL Database 表格中使用的 DynamoDB 分割區索引鍵和對應的 Oracle NoSQL Database 類型。此金鑰將作為 NoSQL 資料庫表格分區金鑰。只有在
defaultSchema設為 true 且來源格式為dynamodb_json時才適用。請參閱將 DynamoDB 類型對應至 Oracle NoSQL 類型以取得詳細資訊。 -
必要 (Y/N): Y,如果
defaultSchema為 true 且來源為dynamodb_json。 -
範例:
"DDBPartitionKey" : "PersonID:INTEGER"注意:如果分割區索引鍵包含虛線 (-) 或點號 (.),移轉程式將會以底線 (_) 取代,因為 NoSQL 資料欄名稱不支援點和虛線。
-
用途:指定要在目標 Oracle NoSQL Database 表格中使用的 DynamoDB 排序索引鍵及其對應的 Oracle NoSQL Database 類型。如果匯入 DynamoDB 表格沒有排序索引鍵,則不得設定此屬性。此索引鍵將作為 NoSQL 資料庫表格中主索引鍵的非分區部分。只有在
defaultSchema設為 true 且來源為dynamodb_json時才適用。請參閱將 DynamoDB 類型對應至 Oracle NoSQL 類型以取得詳細資訊。 -
必要 (Y/N): N
-
範例:
"DDBSortKey" : "Skey:STRING"注意:如果排序索引鍵包含虛線 (-) 或點 (.),則移轉程式會以底線 (_) 取代,因為 NoSQL 資料欄名稱不支援點和虛線。
schemaInfo.onDemandThroughput - 綱要資訊傳輸量
-
用途:指定使用隨選讀取和寫入傳輸量來建立表格。如果未設定此參數,就會以佈建的容量建立表格。
預設值為
false。
注意:此參數不適用於子項表格,因為它們共用最上層父項表格的傳輸量。
-
資料類型:布林值
-
必要 (Y/N): N
-
範例:
"onDemandThroughput" : "true"
-
用途:指定新表格的讀取傳輸量。
div class="infoboxnote" markdown="1">
注意:
-
此參數不適用於隨選容量佈建的表格。
-
此參數不適用於子項表格,因為它們共用最上層父項表格的讀取傳輸量。
</div>
-
-
資料類型:整數
-
必要 (Y/N): Y,如果表格不是子項表格,或 schemaInfo.onDemandThroughput 參數設為
false,否則為 N。 -
範例:
"readUnits" : 100
-
用途:指定新表格的寫入傳輸量。
注意:
- 此參數不適用於隨選容量佈建的表格。
- 此參數不適用於子項表格,因為它們共用最上層父項表格的寫入傳輸量。
-
資料類型:整數
-
必要 (Y/N): Y,如果表格不是子項表格,或 schemaInfo.onDemandThroughput 參數設為
false,否則為 N。 -
範例:
"writeUnits" : 100
-
用途:指定新表格的儲存大小 (GB)。
注意:此參數不適用於子項表格,因為它們共用最上層父項表格的儲存體大小。
-
資料類型:整數
-
必要 (Y/N): Y,如果表格不是子項表格,則為 N。
-
範例:
-
使用
schemaPath"schemaInfo" : { "schemaPath" : "</path/to/a/schema/file>", "readUnits" : 500, "writeUnits" : 1000, "storageSize" : 5 } -
使用
defaultSchema"schemaInfo" : { "defaultSchema" :Yes, "readUnits" : 500, "writeUnits" : 1000, "storageSize" : 5 }
-
-
用途:指定移轉活動期間要使用的表格寫入單位百分比。移轉資料所需的時間與此屬性直接成比例。
預設值為 90。有效範圍是 1 到 100 之間的任何整數。
若要瞭解如何使用此屬性來提升資料移轉速度,請參閱疑難排解 Oracle NoSQL Database Migrator
-
資料類型:整數
-
必要 (Y/N): N
-
範例:
"writeUnitsPercent" : 90
-
用途:指出從來源移轉的記錄已存在於接收器中時,NoSQL 資料庫移轉器的行為。
如果值設為 false,則在移轉表格時,「NoSQL 資料庫移轉程式」會略過接收器中已有相同主索引鍵的記錄。
如果值設為 true,則移轉表格時,NoSQL 資料庫移轉程式會覆寫接收器中已有相同主索引鍵的記錄。
若未指定,預設為 true。
-
資料類型:布林值
-
必要 (Y/N): N
-
範例:
"overwrite" : false
轉換組態範本
本主題說明 Oracle NoSQL Database Migrator 支援之不同轉換的組態參數。如需完整的組態檔範本,請參閱與 NoSQL 資料移轉器搭配使用的術語中的組態檔。
Oracle NoSQL Database Migrator 可讓您修改資料,亦即將資料轉換新增為移轉活動的一部分。您可以在單一移轉中定義多個轉換。在這種情況下,轉換的順序非常重要,因為來源資料會依照指定的順序進行每個轉換。一個轉換的輸出會成為移轉器管線中下一個轉換的輸入。
NoSQL 資料移轉器支援的不同轉換包括:
表格 - 轉型
| 轉換組態屬性 | 您可以使用此轉換來 … |
|---|---|
ignoreFields |
寫入 sink 之前,請先忽略來源資料列中識別的資料欄。 |
includeFields |
寫入接收器之前,請先從來源資料列包括識別的資料欄。 |
renameFields |
請先從來源資料列重新命名識別的資料欄,再寫入接收器。 |
aggregateFields |
從來源將多個資料欄聚總成接收器中的單一資料欄。在此轉換中,您也可以識別要排除在聚總中的資料欄。這些欄位將從彙總欄中略過。 |
您可以在下方找到每個支援轉換的組態範本。
ignore 欄位
ignoreFields 轉換的組態檔格式如下所示。
轉換組態範本
"transforms" : {
"ignoreFields" : ["<field1>","<field2>",...]
}
轉換參數
ignore 欄位
-
用途:要從來源記錄忽略的資料欄名稱陣列。
注意:您只能提供最上層欄位。轉換無法套用至巢狀欄位中的資料。
-
資料類型: 字串陣列
-
必要 (Y/N): Y
-
範例:忽略來源記錄中名為 "name" 與 "address" 的資料欄:
"ignoreFields" : ["name","address"]
包含欄位
includeFields 轉換的組態檔格式如下所示。
轉換組態範本
"transforms" : {
"includeFields" : ["<field1>","<field2>",...]
}
轉換參數
包含欄位
-
用途:要從來源記錄納入的資料欄名稱陣列。它僅包含陣列中指定的欄位,其餘的欄位會被忽略。
注意:如果您指定空陣列,NoSQL Database Migrator 工具就會發出錯誤。此外,您只能指定最上層欄位。NoSQL Database Migrator 工具不會將轉換套用至巢狀欄位中的資料。
-
資料類型: 字串陣列
-
必要 (Y/N): Y
-
範例:從來源記錄包含名為 "age" 與 "gender" 的資料欄:
"includeFields" : ["age","gender"]
rename 欄位
renameFields 轉換的組態檔格式如下所示。
轉換組態範本
"transforms" : {
"renameFields" : {
"<old_name>" : "<new_name>",
"<old_name>" : "<new_name>,"
.....
}
}
轉換參數
rename 欄位
-
用途:要重新命名之資料欄的舊名稱與新名稱的「索引鍵 - 值」組。
注意:您只能提供最上層欄位。轉換無法套用至巢狀欄位中的資料。
-
資料類型:JSON 物件
-
必要 (Y/N): Y
-
範例:將名稱為 "residence" 的資料欄重新命名為 "address",將名稱為 "_id" 的資料欄重新命名為 "id":
"renameFields" : { "residence" : "address", "_id" : "id" }
彙總欄位
aggregateFields 轉換的組態檔格式如下所示。
轉換組態範本
"transforms" : {
"aggregateFields" : {
"fieldName" : "name of the new aggregate field",
"skipFields" : ["<field1>","<field2">,...]
}
}
轉換參數
彙總欄位
-
用途:槽位中聚總欄位的名稱。
-
資料類型: 字串
-
必要 (Y/N): Y
-
範例:如果指定的記錄為:
{ "id" : 100, "name" : "john", "address" : "USA", "age" : 20 }如果聚總轉換為:
"aggregateFields" : { "fieldName" : "document", "skipFields" : ["id"] }接收器中的聚總資料欄看起來如下:
{ "id": 100, "document": { "name": "john", "address": "USA", "age": 20 } }
DynamoDB 類型與 Oracle NoSQL 類型的對應
下表顯示 DynamoDB 類型與 Oracle NoSQL 類型的對應。
表格 - 將 DynamoDB 類型對應至 Oracle NoSQL 類型
| # | DynamoDB 類型 | NoSQL JSON 資料欄的 JSON 類型 | Oracle NoSQL 類型 |
|---|---|---|---|
| 1 | 正在執行字串 (S) | JSON 字串 | STRING |
| 2 | 數字類型 (N) | JSON 編號 | 整數 / 長整數 / 浮點數 / 雙精準數 / 數字 |
| 3 | 布林 (BOOL) | JSON 布林值 | BOOLEAN |
| 4 | 二進位類型 (B) - 位元組緩衝區 | BASE-64 編碼的 JSON 字串 | 二進位 |
| 5 | NULL | JSON 為空值 | NULL |
| 6 | 字串集 (SS) | 已開始執行字串的 JSON 陣列 | 陣列 (字串) |
| 7 | 編號集 (NS) | JSON 數字陣列 | 陣列 (整數 / 長整數 / 浮點數 / 雙精準數 / 數字) |
| 8 | 二進位集 (BS) | Base-64 編碼字串的 JSON 陣列 | 陣列 (二進位) |
| 9 | 清單 (L) | JSON 陣列 | 陣列 (JSON) |
| 10 | 地圖 (M) | JSON 物件 | JSON |
| 11 | 分割區索引鍵 | 無 | 主要按鍵與分區按鍵 |
| 12 | 排序索引鍵 | 無 | 主鍵 |
| 13 | 含虛線和點的屬性名稱 | 含底線的 JSON 欄位名稱 | 底線的資料欄名稱 |
將 DynamoDB 類型對應至 Oracle NoSQL 類型時需要考量幾個額外點:
-
DynamoDB 僅支援一種數字資料類型,且最多可有 38 位數的精確度,而 Oracle NoSQL 支援多種類型,可根據資料的範圍與精確度進行選擇。您可以選取符合輸入資料範圍的適當「數字」類型。如果您不確定資料的本質,可以使用 NoSQL NUMBER 類型。
-
DynamoDB 僅支援一種數字資料類型,且最多可有 38 位數的精確度,而 Oracle NoSQL 支援多種類型,可根據資料的範圍與精確度進行選擇。您可以選取符合輸入資料範圍的適當「數字」類型。如果您不確定資料的本質,可以使用 NoSQL NUMBER 類型。
-
DynamoDB 中的分割區索引鍵限制為 2048 個位元組,但 Oracle NoSQL Cloud Service 的主索引鍵 / 分區索引鍵限制為 64 個位元組。
-
DynamoDB 中的排序索引鍵限制為 1024 個位元組,但 Oracle NoSQL Cloud Service 的主索引鍵限制為 64 個位元組。
-
DynamoDB 中的屬性名稱長度可以為 64KB,但 Oracle NoSQL Cloud 服務資料欄名稱的限制為 64 個字元。
Oracle NoSQL 與 Parquet 資料類型對應
描述 Oracle NoSQL 資料類型與 Parquet 資料類型的對應。
| NoSQL 類型 | 宴會類型 |
|---|---|
| BOOLEAN | BOOLEAN |
| INTEGER | INT32 |
| LONG | INT64 |
| FLOAT | 雙倍精確度 |
| 雙倍精確度 | 雙倍精確度 |
| 二進位 | 二進位 |
| 固定二進位 | 二進位 |
| STRING | 二進位 (字串) |
| 列舉 | 二進位 (字串) 或 BINARY (ENUM),如果已設定邏輯 ENUM |
| UUID | 二進位 (字串) 或 FIXED_BINARY (16),如果已設定邏輯 UUID |
| 時間 (p) | INT64 (TIMESTAMP (p)) |
| NUMBER | 雙倍精確度 |
| field_name ARRAY (T) | |
| field_name MAP (T) | |
| field_name RECORD (K1 T1 N1, KI2 T2 N2,....) 其中: K = 索引鍵名稱 T = 類型 N = 可為空值或非空值 |
|
| JSON | 二進位 (字串) 或 BINARY (JSON),若已設定邏輯 JSON |
備註:當 NoSQL 編號類型轉換為 Parquet Double 類型時,如果無法以 Double 表示值,可能會遺失精確度。如果數字太大而無法表示為 Double,則會轉換為 Double.NEGATIVE_INFINITY 或 Double.POSITIVE_INFINITY。
DynamoDB 表格與 Oracle NoSQL 表格的對應
在 DynamoDB 中,表格是項目的集合,每個項目都是屬性的集合。表格中的每個項目都有唯一的 ID 或主索引鍵。除了主索引鍵之外,表格是無綱要的。每個項目都可以有自己的不同屬性。
DynamoDB 支援兩種不同類型的主索引鍵:
-
分割區索引鍵:由一個稱為分割區索引鍵的屬性組成的簡單主索引鍵。DynamoDB 使用分割區索引鍵的值作為內部雜湊函數的輸入。雜湊函數的輸出會決定儲存項目的分割區。
-
分割索引鍵和排序索引鍵:作為複合主索引鍵,此類型的索引鍵是由兩個屬性所組成。第一個屬性是分割區索引鍵,第二個屬性則是排序索引鍵。DynamoDB 使用分割區索引鍵值作為內部雜湊函數的輸入。雜湊函數的輸出會決定儲存項目的分割區。所有具有相同分割區索引鍵值的項目都會一起儲存,並依排序索引鍵值排序。
相較之下,Oracle NoSQL 表格同時支援綱要和無綱要設計的彈性資料模型。
建立 DynamoDB 表格的模型有兩種不同方式:
-
將 DynamoDB 表格建立為 JSON 文件的模型 (建議) :在此模型中,您可以將 Dynamo DB 表格的所有屬性對應至 NoSQL 表格的 JSON 資料欄,但分割索引鍵和排序索引鍵除外。您將建立分割區索引鍵和排序索引鍵的模型,作為 NoSQL 表格的主索引鍵資料欄。您可以使用
AggregateFields轉換,將非主要索引鍵資料聚總至 JSON 資料欄。注意:移轉程式提供容易操作的組態
defaultSchema,可自動建立無綱要 DDL 表格,同時將屬性聚總至 JSON 資料欄。 -
將 DynamoDB 表格模型化為 NoSQL 表格中的固定資料欄:在此模型中,針對 DynamoDB 表格的每個屬性,您將在 NoSQL 表格中建立資料欄,如將 DynamoDB 類型對應至 Oracle NoSQL 類型中所指定。您將建立分割區索引鍵的模型並排序索引鍵屬性作為主索引鍵。只有在確定匯入 DynamoDB 表格結構是固定的,且每個項目具有大部分屬性的值時,才應使用此選項。如果 DynamoDB 項目沒有通用屬性,這可能會導致許多具有空白值的 NoSQL 資料欄。
注意:由於 DynamoDB 表格的本質為無綱要,我們強烈建議您在將資料從 DynamoDB 移轉至 Oracle NoSQL Database 時使用無綱要表格。這特別適用於每個記錄內容在表格中可能無法一致的大型表格。
Oracle NoSQL Database 移轉器疑難排解
瞭解在使用 時可能面臨的一般挑戰,以及如何解決這些挑戰。
移轉失敗。我可以如何解決此問題?
資料移轉失敗可能是因為多個基本原因。重要原因列示如下:
表格 - 移轉失敗原因
| 錯誤訊息 | 意義 | 解析度 |
|---|---|---|
Failed to connect to Oracle NoSQL Database |
移轉程式無法建立與 NoSQL 資料庫的連線。 |
|
Failed to connect to Oracle NoSQL Database Cloud Service |
移轉程式無法建立與 Oracle NoSQL Database Cloud Service 的連線。 |
|
Table not found |
NoSQL 資料庫移轉程式找不到針對移轉識別的表格。 | 來源:
對於 Sink:
|
DDL Execution failed |
輸入綱要定義檔中提供的 DDL 命令無效。 |
|
failed to write record to the sink table with java.lang.IllegalArgumentException |
輸入記錄與 sink 的表格架構不相符。 |
|
Request timeout |
來源或 sink 的操作未在預期的時間內完成 。 |
|
重新啟動失敗的移轉之前,應考慮什麼?
當資料移轉工作失敗時,接收器會處於包含匯入資料的中間狀態,直到失敗點為止。您可以從日誌識別錯誤和失敗詳細資訊,然後在診斷並更正錯誤後重新啟動移轉。重新啟動的移轉會從一開始就處理所有資料。無法檢查點並從失敗點重新啟動移轉。因此,NoSQL 資料庫移轉器會覆寫已移轉至接收器的任何記錄。
資料移轉所需的時間取決於多個因素,例如移轉的資料量、網路速度、資料庫目前的負載。如果是雲端服務,移轉速度也取決於讀取傳輸量和佈建的寫入傳輸量。因此,為了提高移轉速度,您可以:
-
當資料庫的負載較少時,請考慮在非時數期間執行移轉。
-
請考慮配置執行 NoSQL 資料庫移轉器的 VM、定義資料來源,以及在相同的 OCI 區域中定義資料接收器,以確保最小網路延遲。
-
如果是 Oracle NoSQL Database Cloud Service,請確認配置給表格的儲存體是否足夠。如果「NoSQL 資料庫移轉器」未建立表格,您可以增加寫入傳輸量。如果移轉程式正在建立表格,請考慮在接收器組態中為
schemaInfo.writeUnits參數指定較高的值。資料移轉完成後,您可以降低此值。注意:您可以增加傳輸量或儲存限制的次數並無限制。在 24 小時的期間內,您最多只能減少 4 次傳輸量或儲存限制。請參閱雲端限制和接收器組態樣板。
Migrator 公用程式原本的設計可平行處理多個串流,以實現更高的移轉速度。下列各點建議如何將此功能用於各種移轉案例:
-
從 Oracle NoSQL Database Cloud Service/ 內部部署表格移轉至檔案系統 / 物件儲存體接收器:
在「移轉程式」組態中設定 useMultiFiles 和 chunkSize 參數。
useMultiFiles參數會在 sink 建立多個檔案 / 物件。chunkSize參數會決定資料匯出期間每個檔案的大小。例如:若要匯出 2 GB 資料,請將
useMultiFiles參數設為 true,將chunkSize參數設為 40MB 會讓 Migrator 公用程式寫入 50 個檔案,每個檔案 40 MB。注意: Migrator 公用程式目前可以平行處理 100 個串流。因此,將
chunkSize參數設為最佳檔案大小值,讓 Migrator 公用程式在資料匯出期間最多可建立 100 個檔案。 -
從檔案系統 / 物件儲存移轉至 Oracle NoSQL Database Cloud Service/ 內部部署接收器:
-
如果您的檔案系統 / 物件儲存已匯出包含先前移轉之多個檔案 / 物件的資料,Migrator 公用程式會自動平行處理檔案,以實現更高的移轉速度,同時匯入資料。
-
如果您要從其他外部檔案系統 / 物件儲存移轉資料,請考慮將資料分割成資料來源的多個檔案 / 多個物件。
-
我有個與大型資料集有關的長期移轉。如何追蹤移轉進度?
您可以啟用額外的記錄日誌來追蹤長時間執行之移轉的進度。若要控制 Oracle NoSQL Database Migrator 的記錄日誌行為,您必須在 logging.properties 檔案中設定想要的記錄日誌層次。此檔案隨附 NoSQL Database Migrator 套裝程式,可在解壓縮 Oracle NoSQL Database Migrator 的目錄中使用。以增加詳細資訊順序排列的不同記錄層次為 OFF, SEVERE, WARNING, INFO, FINE, 和 ALL。
將日誌層次設為 OFF 會關閉所有記錄日誌資訊,而將日誌層次設為 ALL 則會提供完整的日誌資訊。
預設的日誌層級為 WARNING。所有的記錄日誌輸出預設都會設定為移至主控台。
您可以在 logging.properties 檔案中查看有關每個日誌層次的註解。