使用 Get API 擷取資料
使用 GetRequest API 以使用主索引鍵擷取單一資料列的資料。
依照預設,所有讀取作業最終會一致。此類型的抄表值成本低於使用絕對一致性的抄表值。您可以使用 Consistency 類別中的 setConsistency() 方法來變更 NoSQLHandle 執行處理的預設一致性。
GetRequest 類別提供簡單且強大的資料讀取方式,而查詢則可用於更複雜的讀取要求。若要從表格讀取資料,請使用 GetRequest 類別指定目標表格和目標索引鍵,然後使用 NoSQLHandle.get() 來執行您的要求。作業的結果可在 GetResult 中取得。您可以使用 NoSQLHandleConfig.setConsistency(oracle.nosql.driver.Consistency) 和 GetRequest.setConsistency() 方法來變更 NoSQLHandle 執行處理的預設一致性。
Download the full code QueryData.java from the examples here.
//Fetch single row using get API
private static void getRow(NoSQLHandle handle,String colName,int Id) throws Exception {
MapValue key = new MapValue().put(colName, Id);
GetRequest getRequest = new GetRequest().setKey(key)
.setTableName(tableName);
GetResult getRes = handle.get(getRequest);
/* on success, GetResult.getValue() returns a non-null value */
if (getRes.getValue() != null) {
System.out.println("\t" +getRes.getValue().toString());
} else {
System.out.println("Get Failed");
}
}
注意:若要從子項表格擷取資料,請在 setTableName 方法中指定表格的完整名稱 (parent_tablename.child_tablename)。從範例下載完整程式碼 TableJoins.java,以瞭解如何從此處的父項子項表格擷取資料。
使用 GetRequest API 以使用主索引鍵擷取單一資料列的資料。您可以使用 borneo.NoSQLHandle.get() 方法讀取單一資料列。此方法可讓您根據記錄的主索引鍵值擷取記錄。borneo.GetRequest 類別是用於簡單 get 作業。它包含目標資料列的主索引鍵值,並傳回 borneo.GetResult 的執行處理。您可以在建立控點之前,使用 borneo.NoSQLHandleConfig.set_consistency() 變更 borneo.NoSQLHandle 的預設一致性。您可以使用 borneo.GetRequest.set_consistency() 對單一要求進行變更。
請從此處的範例下載完整程式碼 QueryData.py 。
# Fetch single row using get API
def getRow(handle,colName,Id):
request = GetRequest().set_table_name('stream_acct')
request.set_key({colName: Id})
print('Query results: ')
result = handle.get(request)
print('Query results are' + str(result.get_value()))
注意:若要從子項表格擷取資料,請在 set_table_name 方法中指定表格的完整名稱 (parent_tablename.child_tablename)。從範例下載完整代碼 TableJoins.py,以瞭解如何從此處的父項子項表格擷取資料。
使用 GetRequest API 以使用主索引鍵擷取單一資料列的資料。您可以使用 Client.Get 函數讀取單一資料列。此功能可讓您根據記錄的主索引鍵值擷取記錄。nosqldb.GetRequest 用於簡單取得作業。它包含目標資料列的主索引鍵值,並傳回 nosqldb.GetResult 的執行處理。如果 get 作業成功,將傳回一個非 nil GetResult.Version。您可以在建立從屬端之前,使用 RequestConfig.Consistency 變更 nosqldb.RequestConfig 的預設一致性。您可以使用 GetRequest.Consistency 欄位來變更單一要求的變數。
請從此處的範例下載完整程式碼 QueryData.go 。
//fetch data from the table
func getRow(client *nosqldb.Client, err error, tableName string, colName string, Id int)(){
key:=&types.MapValue{}
key.Put(colName, Id)
req:=&nosqldb.GetRequest{
TableName: tableName,
Key: key,
}
res, err:=client.Get(req)
if err != nil {
fmt.Printf("GetResults() failed: %v\n", err)
return
}
if res.RowExists() {
fmt.Printf("Got row: %v\n", res.ValueAsJSON())
} else {
fmt.Printf("The row does not exist.\n")
}
}
注意:若要從子項表格擷取資料,請在 TableName 參數中指定表格的完整名稱 (parent_tablename.child_tablename)。從範例下載完整的代碼 TableJoins.go,以瞭解如何從此處的父項子項表格擷取資料。
使用 get API 以使用主索引鍵擷取單一資料列的資料。您可以使用 get 方法讀取單一資料列。此方法可讓您根據記錄的主索引鍵值擷取記錄。如需方法詳細資訊,請參閱 NoSQLClient 類別。
使用「一致性」列舉設定讀取作業的一致性。您可以在使用一致性特性建立 NoSQLClient 執行處理的初始組態中,設定讀取作業的預設一致性。您也可以在 get 方法的 GetOpt 引數中設定一致性特性,針對單一讀取作業進行變更。
JavaScript:從此處的範例下載完整程式碼 QueryData.js 。
//fetches single row with get API
async function getRow(handle,idVal) {
try {
const result = await handle.get(TABLE_NAME,{acct_Id: idVal });
console.log('Got row: %O', result.row);
} catch(error) {
console.error(' Error: ' + error.message);
}
}
TypeScript:您也可以為列提供選擇性的類型參數至 get 及其他資料相關方法。type 參數可以讓 TypeScript 編譯器為傳回的 GetResult 方法提供 type 提示,以及輸入檢查傳遞的索引鍵。類型檢查時,編譯器會檢查主索引鍵欄位是否為表格綱要的一部分,以及主索引鍵欄位的類型是否為允許的類型之一,亦即字串、數值、日期或布林值。Download the full code QueryData.ts from the examples here.
interface StreamInt {
acct_Id: Integer;
profile_name: String;
account_expiry: TIMESTAMP;
acct_data: JSON;
}
/*fetches single row with get API*/
async function getRow(handle: NoSQLClient,idVal: Integer) {
try {
const result = await handle.get<StreamInt>(TABLE_NAME,{acct_Id: idVal });
console.log('Got row: %O', result.row);
} catch(error) {
console.error(' Error: ' + error.message);
}
}
注意:若要從子項表格擷取資料,請在 TABLE_NAME 參數中指定表格的完整名稱 (parent_tablename.child_tablename)。從 TableJoins.js 此處下載完整 JavaScript 程式碼與 TypeScript 完整的程式碼 TableJoins.ts 此處以瞭解如何從父項子項表格擷取資料。
使用 GET API 以使用主索引鍵擷取單一資料列的資料。您可以使用 GetAsync 方法讀取單一資料列。此方法可讓您根據其主索引鍵值擷取資料列。欄位名稱應與表格主鍵欄位名稱相同。您也可以將選項傳遞為 GetOptions。
您可以使用「一致性」列舉來設定讀取作業的一致性。讀取作業的預設一致性可設為 NoSQLConfig 的「一致性」特性。您也可以使用 GetOptions 的「一致性」特性來變更單一 Get 作業的一致性。GetAsync 方法會傳回 Task<GetResult<RecordValue>>。GetResult 執行處理包含傳回的資料列、資料列版本及其他資訊。如果表格中沒有具有所提供主索引鍵的資料列,則「資料列」和「版本」特性的值將會是空值。
從此處的範例下載完整程式碼 QueryData.cs。
private static async Task getRow(NoSQLClient client,String colName, int Id){
var result = await client.GetAsync(TableName,
new MapValue
{
[colName] =Id
});
if (result.Row != null){
Console.WriteLine("Got row: {0}\n", result.Row.ToJsonString());
}
else {
Console.WriteLine("Row with primaryKey {0} doesn't exist",colName);
}
}
注意:若要從子項表格擷取資料,請在 TableName 參數中指定表格的完整名稱 (parent_tablename.child_tablename)。從範例下載完整的代碼 TableJoins.cs,以瞭解如何從此處的父項子項表格擷取資料。