Put APIの使用によるデータの挿入

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

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

PutRequestクラスでは、setValueFromJsonメソッドが提供されます。これは、JSON文字列を取り、それを使用して、表に挿入する行に値を移入します。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");
   }
}
JSONコレクション表へのデータの挿入: 一連のPutRequest操作を使用して、ドキュメントの最上位フィールドをJSONコレクション表に挿入できます。ネスト・レベルのJSONフィールドの場合、putFromJson操作でJSON文字列を指定できます。createFromJsonメソッドを使用すると、フィールドをJSON文字列として取得し、それを使用して表に行を移入することもできます。
/*
 * Construct a row for JSON collection table with the following data:
 * {
 *   "id": 1,
 *   "name": "John Doe",
 *   "age": 25,
 *   "college" : {"name" : "Presidency", "branch" : "Biotechnology"}
 *   }
 * }
 */

String tableName = "usersJSON";

MapValue value = new MapValue().put("id", 1)

            .put("name", "John Doe")
            .put("age", 25)
            .putFromJson("college",  
                 "{\"name\" : \"Presidency\"," +
                 "\"branch\" : \"Biotechnology\"" +
                 " }", null); 

            PutRequest putRequest = new PutRequest()
                .setValue(value)
                .setTableName(tableName);

            PutResult putRes = handle.put(putRequest);
            System.out.println("Put row: " + value + " result=" + putRes);

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')
JSONコレクション表へのデータの挿入: JSON文字列としてJSONコレクション表に行を直接追加できます。
from borneo import PutRequest
request = PutRequest().set_table_name('usersJSON').request.set_value_from_json('{"id": 1, "name": "John Doe", "age": 25, "college" : {"name" : "Presidency", "branch" : "Biotechnology"}}')
handle.put(request)

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")
}
JSONコレクション表へのデータの挿入: JSONデータからマップ値を作成し、その行をJSONコレクション表に追加できます。
value, err:=types.NewMapValueFromJSON(`{"id": 1, "name": "John Doe", "age": 25, "college" : {"name" : "Presidency", "branch" : "Biotechnology"}}`)
iferr!=nil {
    return
}
req:=&nosqldb.PutRequest{
    TableName: "usersJSON",
    Value: value,
}
res, err:=client.Put(req) 

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");
JSONコレクション表へのデータの挿入: サポートされているJSON型のプレーンJavaScriptオブジェクトを指定することで、JSONコレクション表に行を追加できます。
import { NoSQLClient, ServiceType } from 'oracle-nosqldb';
const client = new NoSQLClient('config.json');
const TABLE_NAME = 'usersJSON';
const record = {id : 1, 
    name : 'John Doe',
    age : 25,
    college : {
        name : 'Presidency', 
        branch : 'Biotechnology'
        }
}


async function writeARecord(client, record) {
    await client.put(TABLE_NAME, record);
}

メソッド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");      
   }
}
JSONコレクション表へのデータの挿入: JSONコレクション表に行を追加するには、FromJsonStringメソッドで作成されたJSON文字列から値を入力します。
var tableName = "usersJSON";

private const string data= @"{
"id": 1,
"name": "John Doe",
"age": 25,
"college" : {"name" : "Presidency", "branch" : "Biotechnology"}
}

var result = await client.PutAsync(tableName, FieldValue.FromJsonString(data).AsMapValue);