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.PutRequestnosqldb.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 예제에서 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 예제에서 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 메소드 및 관련 메소드 PutIfAbsentAsync , PutIfPresentAsyncPutIfVersionAsync는 테이블에 단일 행을 삽입하거나 단일 행을 업데이트하는 데 사용됩니다.

위의 각 Put 메소드는 Task<PutResult<RecordValue>>를 반환합니다. PutResult 인스턴스에는 성공 상태(해당 조건이 충족되지 않을 경우 조건부 넣기 작업이 실패할 수 있음) 및 결과 RowVersion와 같은 완료된 Put 작업에 대한 정보가 포함됩니다. 결과의 Success 속성은 조건부 Put 작업과 관련된 성공적인 완료만 나타내며 무조건부 Puts의 경우 항상 true입니다. 다른 이유로 Put 작업이 실패하면 예외가 발생합니다. 데이터 유형 JSON의 필드를 사용하면 JSON 필드의 데이터에 사전 정의된 스키마가 없으므로 데이터를 보다 유연하게 사용할 수 있습니다. JSON 필드에 값을 넣으려면 MapValue 인스턴스를 행 값의 일부로 필드 값으로 제공하십시오. JSON 문자열에서 FieldValue.FromJsonString을 통해 값을 생성할 수도 있습니다.

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 Reference를 참조하십시오.

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 Reference를 참조하십시오.

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 Reference를 참조하십시오.

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 예제에서 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 예제에서 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 메소드를 사용하여 기본 키의 동일한 샤드 키 부분을 단일 기본 쓰기 작업과 공유하는 테이블과 연관된 put 작업 시퀀스를 수행할 수 있습니다. PutManyAsync 메소드를 사용하여 상위 및 하위 테이블에 데이터를 동시에 추가할 수도 있습니다. 이것은 여러 관련 행을 원자적으로 수정하는 효율적인 방법입니다.

모든 클래스 및 메소드에 대한 자세한 내용은 Oracle NoSQL Dotnet SDK API Reference를 참조하십시오.

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)
         );
    }