APIを使用した表データの追加

表に行を追加します。表の行にデータを格納すると、アプリケーションは表からの情報の取得、追加または削除を簡単に実行できます。

PutRequestクラス/putメソッドを使用して、無条件および条件付きプットを実行できます。
  • 既存の行をすべて上書きします。上書きはデフォルトの機能です。
  • 行が存在しない場合にのみ成功します。この場合、IfAbsentメソッドを使用します。
  • 行が存在する場合にのみ成功します。この場合は、IfPresentメソッドを使用します。
  • 行が存在し、バージョンが特定のバージョンと一致する場合にのみ成功します。この場合はIfVersionメソッドを使用し、一致するバージョンを指定する場合はsetMatchVersionメソッドを指定します。

PutRequestクラスには、JSON文字列を取得し、それを使用して表に挿入する行を移入するsetValueFromJsonメソッドがあります。JSON文字列では、表のフィールド名に対応するフィールド名を指定する必要があります。

ここにあるサンプルからフル・コードAddData.javaをダウンロードします。
private static void writeRows(NoSQLHandle handle, MapValue value) 
                                               throws Exception {
   PutRequest putRequest =
     new PutRequest().setValue(value).setTableName(tableName);
   PutResult putResult = handle.put(putRequest);

   if (putResult.getVersion() != null) {
      System.out.println("Added a row to the stream_acct table");
   } else {
      System.out.println("Put failed");
   }
}

borneo.PutRequestクラスは、単一行の挿入に使用されるborneo.NoSQLHandle.put()メソッドへの入力を表します。

JSONデータを表に追加することもできます。固定スキーマ表の場合、JSONはターゲット・スキーマに変換されます。JSONデータは、JSON型の列に直接挿入できます。JSONデータ型を使用すると、固定スキーマなしで表データを作成できます。これにより、データの柔軟な使用が可能になります。

ここの例からフル・コードAddData.pyをダウンロードします。
def insert_record(handle,table_name,acct_data):
  request = PutRequest().set_table_name(table_name)
                        .set_value_from_json(acct_data)

  handle.put(request)
  print('Added a row to the stream_acct table')

nosqldb.PutRequestは、nosqldb.Put() 関数への入力を表し、単一行の挿入に使用されます。

行に指定されたデータ値(PutRequest内)は、*types.MapValueです。MapValueの各エントリのkey部分はターゲット表の列名と一致する必要があり、value 部分は列の有効な値である必要があります。JSONデータは、JSON型の列に直接挿入することもできます。JSONデータ型を使用すると、固定スキーマなしで表データを作成できます。これにより、データの柔軟な使用が可能になります。

ここの例からフル・コードAddData.goをダウンロードします。
func insertData(client *nosqldb.Client, err error, 
                tableName string,value1 *types.MapValue )(){
  putReq := &nosqldb.PutRequest{
    	TableName: tableName,
    	Value: value1,
  }
  putRes, err := client.Put(putReq)
  if err != nil {
     fmt.Printf("failed to put single row: %v\n", err)
     return
  }
  fmt.Printf("Added a row to the stream_acct table\n")
}

表に単一行を挿入するには、putメソッドを使用します。メソッドの詳細は、NoSQLClientクラスを参照してください。

JavaScript: ここの例からフル・コードAddData.jsをダウンロードします。
/* Adding 3 records in acct_stream table */
let putResult = await handle.put(TABLE_NAME, JSON.parse(acct1));
let putResult1 = await handle.put(TABLE_NAME, JSON.parse(acct2));
let putResult2 = await handle.put(TABLE_NAME, JSON.parse(acct3));

console.log("Added rows to the stream_acct table");
TypeScript: ここの例からフル・コードAddData.tsをダウンロードします。
interface StreamInt {
   acct_Id: Integer;
   profile_name: String;
   account_expiry: TIMESTAMP;
   acct_data: JSON;
}
/* Adding 3 records in acct_stream table */
let putResult = await handle.put<StreamInt>(TABLE_NAME, JSON.parse(acct1));
let putResult1 = await handle.put<StreamInt>(TABLE_NAME, JSON.parse(acct2));
let putResult2 = await handle.put<StreamInt>(TABLE_NAME, JSON.parse(acct3));

console.log("Added rows to the stream_acct table");

メソッドPutAsyncおよび関連メソッドPutIfAbsentAsyncPutIfPresentAsyncおよびPutIfVersionAsyncを使用して、表への単一行の挿入または単一行の更新を行います。

前述の各Putメソッドは、Task<PutResult<RecordValue>>を返します。PutResultインスタンスには、完了したPut操作に関する情報(成功ステータス(対応する条件が満たされなかった場合は条件付きput操作が失敗する可能性がある)および結果のRowVersionが含まれます。結果のSuccessプロパティは、条件付きPut操作に関連する正常な完了のみを示し、無条件のPutに対して常にtrueであることに注意してください。その他の理由でPut操作が失敗した場合、例外がスローされます。JSONデータ型のフィールドを使用すると、JSONフィールドのデータに事前定義されたスキーマがないため、データの使用の柔軟性が向上します。値をJSONフィールドに入力するには、MapValueインスタンスを行値の一部としてフィールド値に指定します。また、FieldValue.FromJsonStringを使用してJSON文字列から値を作成することもできます。

ここにあるサンプルからフル・コードAddData.csをダウンロードします。
private static async Task insertData(NoSQLClient client, String acctdet){
   var putResult = await client.PutAsync(TableName, 
                              FieldValue.FromJsonString(acctdet).AsMapValue);
   if (putResult.ConsumedCapacity != null)
   {
      Console.WriteLine(" Added a row to the stream_acct table");      
   }
}

MultiWrite APIを使用して、単一のデータベース操作に複数のデータ行を追加できます。

WriteMultipleRequestクラスを使用して、主キーの同じシャード・キー部分を単一のアトミック書込み操作として共有する、表に関連付けられた一連のPutRequest操作を実行できます。WriteMultipleRequestクラスを使用して、データを親表と子表に同時に追加することもできます。これは、複数の関連する行を原子的に変更する効率的な方法です。操作が正常に実行された場合、WriteMultipleResult.getSuccess()メソッドはtrueを返します。

様々なクラスおよびメソッドの詳細は、Oracle NoSQL Java SDK APIリファレンスを参照してください。

ここの例からフル・コードMultiWrite.javaをダウンロードします。
private static void writeMul(NoSQLHandle handle,String parent_tblname, 
String parent_data, String child_tblname, String child_data){
      WriteMultipleRequest umRequest = new WriteMultipleRequest();
      PutRequest putRequest =
         new PutRequest().setValueFromJson(parent_data,null).setTableName(parent_tblname);
      umRequest.add(putRequest, false);
      putRequest =
         new PutRequest().setValueFromJson(child_data,null).setTableName(child_tblname);
      umRequest.add(putRequest, false);
      WriteMultipleResult umResult = handle.writeMultiple(umRequest);
}

borneo.WriteMultipleRequestクラスを使用して、主キーの同じシャード・キー部分を単一のアトミック書込み操作として共有する表に関連付けられた一連のPutRequest操作を実行できます。borneo.WriteMultipleRequestクラスを使用して、データを親表と子表に同時に追加することもできます。これは、複数の関連する行を原子的に変更する効率的な方法です。

様々なクラスおよびメソッドの詳細は、Oracle NoSQL Python SDK APIリファレンスを参照してください。

ここの例からフル・コードMultiWrite.pyをダウンロードします。
def mul_write(handle,parent_tblname,parent_data,
child_tblname, child_data):
    request = PutRequest()
    request.set_value_from_json(parent_data)
    request.set_table_name('ticket')
    wm_req.add(request, True)
    request1 = PutRequest()
    request1.set_table_name(child_tblname)
    request1.set_value_from_json(child_data)
    wm_req.add(request1, True)
    result = handle.write_multiple(wm_req)

WriteMultipleRequestクラスを使用して、主キーの同じシャード・キー部分を単一のアトミック書込み操作として共有する、表に関連付けられた一連のPutRequest操作を実行できます。WriteMultipleRequestクラスを使用して、データを親表と子表に同時に追加することもできます。これは、複数の関連する行を原子的に変更する効率的な方法です。

様々なクラスおよびメソッドの詳細は、Oracle NoSQL Go SDK APIリファレンスを参照してください。

ここの例からフル・コードMultiWrite.goをダウンロードします。
//multiple write from the table
func mul_write(client *nosqldb.Client, err error, parenttbl_name string,
parent_data string, childtbl_name string, child_data string)(){
   value, err := types.NewMapValueFromJSON(parent_data)
	putReq := &nosqldb.PutRequest{
      TableName: parenttbl_name,
      Value:     value,
   }
	wmReq := &nosqldb.WriteMultipleRequest{
		TableName: "",
		Timeout:   10 * time.Second,
	}
   wmReq.AddPutRequest(putReq, true)

	value1, err := types.NewMapValueFromJSON(child_data)
	putReq1 := &nosqldb.PutRequest{
      TableName: childtbl_name,
      Value:     value1,
   }
   wmReq.AddPutRequest(putReq1, true)
	wmRes, err := client.WriteMultiple(wmReq)
	if err != nil {
		fmt.Printf("WriteMultiple() failed: %v\n", err)
		return
	}
	if wmRes.IsSuccess() {
		fmt.Printf("WriteMultiple() succeeded\n")
	} else {
		fmt.Printf("WriteMultiple() failed\n")
	}
}

writeManyメソッドを使用して、主キーの同じシャード・キー部分を単一のアトミック書込み操作として共有する表に関連付けられた一連のput操作を実行できます。writeManyメソッドを使用して、データを親表と子表に同時に追加することもできます。これは、複数の関連する行を原子的に変更する効率的な方法です。

メソッドの詳細は、NoSQLClientクラスを参照してください。

JavaScript: ここの例からフル・コードMultiWrite.jsをダウンロードします。
const ops = [
               {
                  tableName: 'ticket',
                  put: {
                     "ticketNo": "1762344493810",
                     "confNo" : "LE6J4Z"
                  },
                  abortOnFail: true
               },
               {
                  tableName: 'ticket.bagInfo',
                  put: {
                     "ticketNo":"1762344493810",
                     "id":"79039899165297",
                     "tagNum":"17657806255240",
                     "routing":"MIA/LAX/MEL",
                     "lastActionCode":"OFFLOAD",
                     "lastActionDesc":"OFFLOAD",
                     "lastSeenStation":"MEL",
                     "lastSeenTimeGmt":"2019-02-01T16:13:00Z",
                     "bagArrivalDate":"2019-02-01T16:13:00Z"
                   },
                  abortOnFail: true
               }
            ];

const res = await handle.writeMany(ops, null);
TypeScript: ここの例からフル・コードMultiWrite.tsをダウンロードします。
const ops = [
               {
                  tableName: 'ticket',
                  put: {
                     "ticketNo": "1762344493810",
                     "confNo" : "LE6J4Z"
                  },
                  abortOnFail: true
               },
               {
                  tableName: 'ticket.bagInfo',
                  put: {
                     "ticketNo":"1762344493810",
                     "id":"79039899165297",
                     "tagNum":"17657806255240",
                     "routing":"MIA/LAX/MEL",
                     "lastActionCode":"OFFLOAD",
                     "lastActionDesc":"OFFLOAD",
                     "lastSeenStation":"MEL",
                     "lastSeenTimeGmt":"2019-02-01T16:13:00Z",
                     "bagArrivalDate":"2019-02-01T16:13:00Z"
                   },
                  abortOnFail: true
               }
            ];

const res = await handle.writeMany(ops, null);

PutManyAsyncメソッドを使用して、1つのアトミック書込み操作として主キーの同じシャード・キー部分を共有する表に関連付けられた一連のput操作を実行できます。PutManyAsyncメソッドを使用して、データを親表と子表に同時に追加することもできます。これは、複数の関連する行を原子的に変更する効率的な方法です。

すべてのクラスおよびメソッドの詳細は、Oracle NoSQL Dotnet SDK APIリファレンスを参照してください。

ここの例からフル・コードMultiWrite.cs をダウンロードします。
private static async Task mul_write(NoSQLClient client,string parentbl_name,
string data1, string childtbl_name, string data2){
    var result = await client.WriteManyAsync(
        new WriteOperationCollection()
          .AddPut(parentbl_name, FieldValue.FromJsonString(data1).AsMapValue)
          .AddPut(childtbl_name, FieldValue.FromJsonString(data2).AsMapValue)
         );
    }