使用 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,以瞭解如何從此處的父項子項表格擷取資料。