API를 사용하여 테이블 데이터 수정 또는 삭제
API를 사용하여 데이터 갱신/삽입
Query 요청에서 UPSERT SQL 명령을 사용하여 데이터를 갱신하거나 삽입할 수 있습니다.
질의를 실행하려면 NoSQLHandle.query()
API를 사용합니다.
/*Upsert data*/
private static void upsertRows(NoSQLHandle handle,String sqlstmt) throws Exception {
try (
QueryRequest queryRequest = new QueryRequest().setStatement(sqlstmt);
QueryIterableResult results = handle.queryIterable(queryRequest)){
for (MapValue res : results) {
System.out.println("\t" + res);
}
}
}
String upsert_row = "UPSERT INTO stream_acct VALUES("+
"1,"+
"\"AP\","+
"\"2023-10-18\","+
"{\"firstName\": \"Adam\","+
"\"lastName\": \"Phillips\","+
"\"country\": \"Germany\","+
"\"contentStreamed\": [{"+
"\"showName\" : \"At the Ranch\","+
"\"showId\" : 26,"+
"\"showtype\" : \"tvseries\","+
"\"genres\" : [\"action\", \"crime\", \"spanish\"],"+
"\"numSeasons\" : 4,"+
"\"seriesInfo\": [ {"+
"\"seasonNum\" : 1,"+
"\"numEpisodes\" : 2,"+
"\"episodes\": [ {"+
"\"episodeID\": 20,"+
"\"episodeName\" : \"Season 1 episode 1\","+
"\"lengthMin\": 70,"+
"\"minWatched\": 70,"+
"\"date\" : \"2022-04-18\""+
"},"+
"{"+
"\"episodeID\": 30,"+
"\"lengthMin\": 60,"+
"\"episodeName\" : \"Season 1 episode 2\","+
"\"minWatched\": 60,"+
"\"date\" : \"2022-04-18\""+
"}]"+
"},"+
"{"+
"\"seasonNum\": 2,"+
"\"numEpisodes\" : 2,"+
"\"episodes\": [{"+
"\"episodeID\": 40,"+
"\"episodeName\" : \"Season 2 episode 1\","+
"\"lengthMin\": 40,"+
"\"minWatched\": 40,"+
"\"date\" : \"2022-04-25\""+
"},"+
"{"+
"\"episodeID\": 50,"+
"\"episodeName\" : \"Season 2 episode 2\","+
"\"lengthMin\": 45,"+
"\"minWatched\": 30,"+
"\"date\" : \"2022-04-27\""+
"}"+
"]"+
"},"+
"{"+
"\"seasonNum\": 3,"+
"\"numEpisodes\" : 2,"+
"\"episodes\": [{"+
"\"episodeID\": 60,"+
"\"episodeName\" : \"Season 3 episode 1\","+
"\"lengthMin\": 50,"+
"\"minWatched\": 50,"+
"\"date\" : \"2022-04-25\""+
"},"+
"{"+
"\"episodeID\": 70,"+
"\"episodeName\" : \"Season 3 episode 2\","+
"\"lengthMin\": 45,"+
"\"minWatched\": 30,"+
"\"date\" : \"2022-04-27\""+
"}"+
"]"+
"}"+
"]"+
"},"+
"{"+
"\"showName\": \"Bienvenu\","+
"\"showId\": 15,"+
"\"showtype\": \"tvseries\","+
"\"genres\" : [\"comedy\", \"french\"],"+
"\"numSeasons\" : 2,"+
"\"seriesInfo\": ["+
"{"+
"\"seasonNum\" : 1,"+
"\"numEpisodes\" : 2,"+
"\"episodes\": ["+
"{"+
"\"episodeID\": 20,"+
"\"episodeName\" : \"Bonjour\","+
"\"lengthMin\": 45,"+
"\"minWatched\": 45,"+
"\"date\" : \"2022-03-07\""+
"},"+
"{"+
"\"episodeID\": 30,"+
"\"episodeName\" : \"Merci\","+
"\"lengthMin\": 42,"+
"\"minWatched\": 42,"+
"\"date\" : \"2022-03-08\""+
"}"+
"]"+
"}"+
"]"+
"}"+
"]}) RETURNING *";
System.out.println("Upsert data ");
upsertRows(handle,upsert_row);
질의를 실행하려면 borneo.NoSQLHandle.query()
메소드를 사용합니다.
#upsert data
def upsert_data(handle,sqlstmt):
request = QueryRequest().set_statement(sqlstmt)
result = handle.query(request)
print('Upsert data')
for r in result.get_results():
print('\t' + str(r))
upsert_row = '''
UPSERT INTO stream_acct VALUES
(
1,
"AP",
"2023-10-18",
{
"firstName": "Adam",
"lastName": "Phillips",
"country": "Germany",
"contentStreamed": [{
"showName": "At the Ranch",
"showId": 26,
"showtype": "tvseries",
"genres": ["action", "crime", "spanish"],
"numSeasons": 4,
"seriesInfo": [{
"seasonNum": 1,
"numEpisodes": 2,
"episodes": [{
"episodeID": 20,
"episodeName": "Season 1 episode 1",
"lengthMin": 75,
"minWatched": 75,
"date": "2022-04-18"
},
{
"episodeID": 30,
"lengthMin": 60,
"episodeName": "Season 1 episode 2",
"minWatched": 40,
"date": "2022 - 04 - 18 "
}]
},
{
"seasonNum": 2,
"numEpisodes": 2,
"episodes": [{
"episodeID": 40,
"episodeName": "Season 2 episode 1",
"lengthMin": 40,
"minWatched": 30,
"date": "2022-04-25"
},
{
"episodeID": 50,
"episodeName": "Season 2 episode 2",
"lengthMin": 45,
"minWatched": 30,
"date": "2022-04-27"
}]
},
{
"seasonNum": 3,
"numEpisodes": 2,
"episodes": [{
"episodeID": 60,
"episodeName": "Season 3 episode 1",
"lengthMin": 20,
"minWatched": 20,
"date": "2022-04-25"
},
{
"episodeID": 70,
"episodeName": "Season 3 episode 2",
"lengthMin": 45,
"minWatched": 30,
"date": "2022 - 04 - 27 "
}]
}]
},
{
"showName": "Bienvenu",
"showId": 15,
"showtype": "tvseries",
"genres": ["comedy", "french"],
"numSeasons": 2,
"seriesInfo": [{
"seasonNum": 1,
"numEpisodes": 2,
"episodes": [{
"episodeID": 20,
"episodeName": "Bonjour",
"lengthMin": 45,
"minWatched": 45,
"date": "2022-03-07"
},
{
"episodeID": 30,
"episodeName": "Merci",
"lengthMin": 42,
"minWatched": 42,
"date": "2022-03-08"
}]
}]
}]
}
) RETURNING *
'''
upsert_data(handle,upsert_row)
질의를 실행하려면 Client.Query
함수를 사용합니다.
//upsert data in the table
func upsertRows(client *nosqldb.Client, err error,
tableName string, querystmt string)(){
prepReq := &nosqldb.PrepareRequest{
Statement: querystmt,
}
prepRes, err := client.Prepare(prepReq)
if err != nil {
fmt.Printf("Prepare failed: %v\n", err)
return
}
queryReq := &nosqldb.QueryRequest{
PreparedStatement: &prepRes.PreparedStatement, }
var results []*types.MapValue
for {
queryRes, err := client.Query(queryReq)
if err != nil {
fmt.Printf("Upsert failed: %v\n", err)
return
}
res, err := queryRes.GetResults()
if err != nil {
fmt.Printf("GetResults() failed: %v\n", err)
return
}
results = append(results, res...)
if queryReq.IsDone() {
break
}
}
for i, r := range results {
fmt.Printf("\t%d: %s\n", i+1, jsonutil.AsJSON(r.Map()))
}
}
upsert_data := `UPSERT INTO stream_acct VALUES(
1,
"AP",
"2023-10-18",
{
"firstName": "Adam",
"lastName": "Phillips",
"country": "Germany",
"contentStreamed": [
{
"showName": "At the Ranch",
"showId": 26,
"showtype": "tvseries",
"genres": [
"action",
"crime",
"spanish"
],
"numSeasons": 4,
"seriesInfo": [
{
"seasonNum": 1,
"numEpisodes": 2,
"episodes": [
{
"episodeID": 20,
"episodeName": "Season 1 episode 1",
"lengthMin": 75,
"minWatched": 75,
"date": "2022-04-18"
},
{
"episodeID": 30,
"lengthMin": 60,
"episodeName": "Season 1 episode 2",
"minWatched": 40,
"date": "2022 - 04 - 18 "
}
]
},
{
"seasonNum": 2,
"numEpisodes": 2,
"episodes": [
{
"episodeID": 40,
"episodeName": "Season 2 episode 1",
"lengthMin": 40,
"minWatched": 30,
"date": "2022-04-25"
},
{
"episodeID": 50,
"episodeName": "Season 2 episode 2",
"lengthMin": 45,
"minWatched": 30,
"date": "2022-04-27"
}
]
},
{
"seasonNum": 3,
"numEpisodes": 2,
"episodes": [
{
"episodeID": 60,
"episodeName": "Season 3 episode 1",
"lengthMin": 20,
"minWatched": 20,
"date": "2022-04-25"
},
{
"episodeID": 70,
"episodeName": "Season 3 episode 2",
"lengthMin": 45,
"minWatched": 30,
"date": "2022 - 04 - 27 "
}
]
}
]
},
{
"showName": "Bienvenu",
"showId": 15,
"showtype": "tvseries",
"genres": [
"comedy",
"french"
],
"numSeasons": 2,
"seriesInfo": [
{
"seasonNum": 1,
"numEpisodes": 2,
"episodes": [
{
"episodeID": 20,
"episodeName": "Bonjour",
"lengthMin": 45,
"minWatched": 45,
"date": "2022-03-07"
},
{
"episodeID": 30,
"episodeName": "Merci",
"lengthMin": 42,
"minWatched": 42,
"date": "2022-03-08"
}
]
}
]
}
]
}) RETURNING *`
upsertRows(client, err,tableName,upsert_data)
Query 요청에서 UPSERT SQL 명령을 사용하여 데이터를 갱신하거나 삽입할 수 있습니다. 질의를 실행하려면 query
메소드를 사용합니다.
/*upserts data in the table*/
async function upsertData(handle,querystmt) {
const opt = {};
try {
do {
const result = await handle.query(querystmt, opt);
for(let row of result.rows) {
console.log(' %O', row);
}
opt.continuationKey = result.continuationKey;
} while(opt.continuationKey);
} catch(error) {
console.error(' Error: ' + error.message);
}
}
interface StreamInt {
acct_Id: Integer;
profile_name: String;
account_expiry: TIMESTAMP;
acct_data: JSON;
}
async function upsertData(handle: NoSQLClient,querystmt: string) {
const opt = {};
try {
do {
const result = await handle.query<StreamInt>(querystmt, opt);
for(let row of result.rows) {
console.log(' %O', row);
}
opt.continuationKey = result.continuationKey;
} while(opt.continuationKey);
} catch(error) {
console.error(' Error: ' + error.message);
}
}
const upsert_row = `UPSERT INTO stream_acct VALUES
(
1,
"AP",
"2023-10-18",
{
"firstName": "Adam",
"lastName": "Phillips",
"country": "Germany",
"contentStreamed": [{
"showName": "At the Ranch",
"showId": 26,
"showtype": "tvseries",
"genres": ["action", "crime", "spanish"],
"numSeasons": 4,
"seriesInfo": [{
"seasonNum": 1,
"numEpisodes": 2,
"episodes": [{
"episodeID": 20,
"episodeName": "Season 1 episode 1",
"lengthMin": 75,
"minWatched": 75,
"date": "2022-04-18"
},
{
"episodeID": 30,
"lengthMin": 60,
"episodeName": "Season 1 episode 2",
"minWatched": 40,
"date": "2022 - 04 - 18 "
}]
},
{
"seasonNum": 2,
"numEpisodes": 2,
"episodes": [{
"episodeID": 40,
"episodeName": "Season 2 episode 1",
"lengthMin": 40,
"minWatched": 30,
"date": "2022-04-25"
},
{
"episodeID": 50,
"episodeName": "Season 2 episode 2",
"lengthMin": 45,
"minWatched": 30,
"date": "2022-04-27"
}]
},
{
"seasonNum": 3,
"numEpisodes": 2,
"episodes": [{
"episodeID": 60,
"episodeName": "Season 3 episode 1",
"lengthMin": 20,
"minWatched": 20,
"date": "2022-04-25"
},
{
"episodeID": 70,
"episodeName": "Season 3 episode 2",
"lengthMin": 45,
"minWatched": 30,
"date": "2022 - 04 - 27 "
}]
}]
},
{
"showName": "Bienvenu",
"showId": 15,
"showtype": "tvseries",
"genres": ["comedy", "french"],
"numSeasons": 2,
"seriesInfo": [{
"seasonNum": 1,
"numEpisodes": 2,
"episodes": [{
"episodeID": 20,
"episodeName": "Bonjour",
"lengthMin": 45,
"minWatched": 45,
"date": "2022-03-07"
},
{
"episodeID": 30,
"episodeName": "Merci",
"lengthMin": 42,
"minWatched": 42,
"date": "2022-03-08"
}]
}]
}]
}) RETURNING *`
await upsertData(handle,upsert_row);
console.log("Upsert data into table");
Query 요청에서 UPSERT SQL 명령을 사용하여 데이터를 갱신하거나 삽입할 수 있습니다. 질의를 실행하려면 QueryAsync
메소드 또는 GetQueryAsyncEnumerable
메소드를 사용하고 결과 비동기 열거 가능을 반복합니다.
private static async Task upsertData(NoSQLClient client,String querystmt){
var queryEnumerable = client.GetQueryAsyncEnumerable(querystmt);
await DoQuery(queryEnumerable);
}
private static async Task DoQuery(IAsyncEnumerable<QueryResult<RecordValue>> queryEnumerable){
Console.WriteLine(" Query results:");
await foreach (var result in queryEnumerable) {
foreach (var row in result.Rows)
{
Console.WriteLine();
Console.WriteLine(row.ToJsonString());
}
}
}
private const string upsert_row = @"UPSERT INTO stream_acct VALUES
(
1,
""AP"",
""2023-10-18"",
{
""firstName"": ""Adam"",
""lastName"": ""Phillips"",
""country"": ""Germany"",
""contentStreamed"": [{
""showName"": ""At the Ranch"",
""showId"": 26,
""showtype"": ""tvseries"",
""genres"": [""action"", ""crime"", ""spanish""],
""numSeasons"": 4,
""seriesInfo"": [{
""seasonNum"": 1,
""numEpisodes"": 2,
""episodes"": [{
""episodeID"": 20,
""episodeName"": ""Season 1 episode 1"",
""lengthMin"": 75,
""minWatched"": 75,
""date"": ""2022-04-18""
},
{
""episodeID"": 30,
""lengthMin"": 60,
""episodeName"": ""Season 1 episode 2"",
""minWatched"": 40,
""date"": ""2022 - 04 - 18""
}]
},
{
""seasonNum"": 2,
""numEpisodes"": 2,
""episodes"": [{
""episodeID"": 40,
""episodeName"": ""Season 2 episode 1"",
""lengthMin"": 40,
""minWatched"": 30,
""date"": ""2022-04-25""
},
{
""episodeID"": 50,
""episodeName"": ""Season 2 episode 2"",
""lengthMin"": 45,
""minWatched"": 30,
""date"": ""2022-04-27""
}]
},
{
""seasonNum"": 3,
""numEpisodes"": 2,
""episodes"": [{
""episodeID"": 60,
""episodeName"": ""Season 3 episode 1"",
""lengthMin"": 20,
""minWatched"": 20,
""date"": ""2022-04-25""
},
{
""episodeID"": 70,
""episodeName"": ""Season 3 episode 2"",
""lengthMin"": 45,
""minWatched"": 30,
""date"": ""2022 - 04 - 27""
}]
}]
},
{
""showName"": ""Bienvenu"",
""showId"": 15,
""showtype"": ""tvseries"",
""genres"": [""comedy"", ""french""],
""numSeasons"": 2,
""seriesInfo"": [{
""seasonNum"": 1,
""numEpisodes"": 2,
""episodes"": [{
""episodeID"": 20,
""episodeName"": ""Bonjour"",
""lengthMin"": 45,
""minWatched"": 45,
""date"": ""2022-03-07""
},
{
""episodeID"": 30,
""episodeName"": ""Merci"",
""lengthMin"": 42,
""minWatched"": 42,
""date"": ""2022-03-08""
}]
}]
}]
}
) RETURNING *";
await upsertData(client,upsert_row);
Console.WriteLine("Upsert data in table");
API를 사용하여 데이터 업데이트
Query 요청에서 UPDATE SQL 명령을 사용하여 데이터를 갱신할 수 있습니다.
질의를 실행하려면 NoSQLHandle.query()
API를 사용합니다.
//Update data
private static void updateRows(NoSQLHandle handle,String sqlstmt) throws Exception {
QueryRequest queryRequest = new QueryRequest().setStatement(sqlstmt);
handle.query(queryRequest);
System.out.println("Updated table " + tableName);
}
/* update non-JSON data*/
String upd_stmt ="UPDATE stream_acct SET account_expiry=\"2023-12-28T00:00:00.0Z\" WHERE acct_Id=3";
updateRows(handle,upd_stmt);
질의를 실행하려면 borneo.NoSQLHandle.query()
메소드를 사용합니다.
#update data
def update_data(handle,sqlstmt):
request = QueryRequest().set_statement(sqlstmt)
result = handle.query(request)
print('Data Updated in table: stream_acct')
# update non-JSON data
upd_stmt ='''UPDATE stream_acct SET account_expiry="2023-12-28T00:00:00.0Z" WHERE acct_Id=3'''
update_data(handle,upd_stmt)
질의를 실행하려면 Client.Query
함수를 사용합니다.
//update data in the table
func updateRows(client *nosqldb.Client, err error, tableName string, querystmt string)(){
prepReq := &nosqldb.PrepareRequest{
Statement: querystmt,
}
prepRes, err := client.Prepare(prepReq)
if err != nil {
fmt.Printf("Prepare failed: %v\n", err)
return
}
queryReq := &nosqldb.QueryRequest{
PreparedStatement: &prepRes.PreparedStatement, }
var results []*types.MapValue
for {
queryRes, err := client.Query(queryReq)
if err != nil {
fmt.Printf("Upsert failed: %v\n", err)
return
}
res, err := queryRes.GetResults()
if err != nil {
fmt.Printf("GetResults() failed: %v\n", err)
return
}
results = append(results, res...)
if queryReq.IsDone() {
break
}
}
for i, r := range results {
fmt.Printf("\t%d: %s\n", i+1, jsonutil.AsJSON(r.Map()))
}
fmt.Printf("Updated data in the table: \n")
}
updt_stmt := "UPDATE stream_acct SET account_expiry='2023-12-28T00:00:00.0Z' WHERE acct_Id=3"
updateRows(client, err,tableName,updt_stmt)
질의를 실행하려면 query
메소드를 사용합니다.
/*updates data in the table*/
async function updateData(handle,querystmt) {
const opt = {};
try {
do {
const result = await handle.query(querystmt, opt);
opt.continuationKey = result.continuationKey;
} while(opt.continuationKey);
} catch(error) {
console.error(' Error: ' + error.message);
}
}
interface StreamInt {
acct_Id: Integer;
profile_name: String;
account_expiry: TIMESTAMP;
acct_data: JSON;
}
async function updateData(handle: NoSQLClient,querystmt: string) {
const opt = {};
try {
do {
const result = await handle.query<StreamInt>(querystmt, opt);
for(let row of result.rows) {
console.log(' %O', row);
}
opt.continuationKey = result.continuationKey;
} while(opt.continuationKey);
} catch(error) {
console.error(' Error: ' + error.message);
}
}
const updt_stmt = 'UPDATE stream_acct SET account_expiry="2023-12-28T00:00:00.0Z" WHERE acct_Id=3'
await updateData(handle,updt_stmt);
console.log("Data updated in the table");
Query 요청에서 UPDATE SQL 명령을 사용하여 데이터를 갱신할 수 있습니다. 질의를 실행하려면 QueryAsync
메소드를 호출하거나 GetQueryAsyncEnumerable
메소드를 호출하고 결과 비동기 열거 가능을 반복할 수 있습니다.
private static async Task updateData(NoSQLClient client,String querystmt){
var queryEnumerable = client.GetQueryAsyncEnumerable(querystmt);
}
private const string updt_stmt =
@"UPDATE stream_acct SET account_expiry =""2023-12-28T00:00:00.0Z"" WHERE acct_Id=3";
await updateData(client,updt_stmt);
Console.WriteLine("Data updated in the table");
API를 사용하여 JSON 데이터 업데이트
UPDATE SQL 명령을 사용하여 테이블의 JSON 객체에서 데이터를 추가 및 제거할 수 있습니다.
질의를 실행하려면 NoSQLHandle.query()
API를 사용합니다.
//Update data
private static void updateRows(NoSQLHandle handle,String sqlstmt) throws Exception {
QueryRequest queryRequest = new QueryRequest().setStatement(sqlstmt);
handle.query(queryRequest);
System.out.println("Updated table " + tableName);
}
/* update JSON data and add a node*/
String upd_json_addnode="UPDATE stream_acct acct1 ADD acct1.acct_data.contentStreamed.seriesInfo[1].episodes
{\"date\" : \"2022-04-26\","+
"\"episodeID\" : 43,"+
"\"episodeName\" : \"Season 2 episode 2\","+
"\"lengthMin\" : 45,"+
"\"minWatched\" : 45} WHERE acct_Id=2 RETURNING *";
updateRows(handle,upd_json_addnode);
/* update JSON data and remove a node*/
String upd_json_delnode="UPDATE stream_acct acct1 REMOVE acct1.acct_data.contentStreamed.seriesInfo[1].episodes[1] WHERE acct_Id=2 RETURNING *";
updateRows(handle,upd_json_delnode);
질의를 실행하려면 borneo.NoSQLHandle.query()
메소드를 사용합니다.
#update data
def update_data(handle,sqlstmt):
request = QueryRequest().set_statement(sqlstmt)
result = handle.query(request)
print('Data Updated in table: stream_acct')
# update JSON data and add a node
upd_json_addnode = '''UPDATE stream_acct acct1 ADD acct1.acct_data.contentStreamed.seriesInfo[1].episodes {
"date" : "2022-04-26",
"episodeID" : 43,
"episodeName" : "Season 2 episode 2",
"lengthMin" : 45,
"minWatched" : 45} WHERE acct_Id=2 RETURNING *'''
update_data(handle,upd_json_addnode)
# update JSON data and delete a node
upd_json_delnode = '''UPDATE stream_acct acct1 REMOVE acct1.acct_data.contentStreamed.seriesInfo[1].episodes[1] WHERE acct_Id=2 RETURNING *'''
update_data(handle,upd_json_delnode)
질의를 실행하려면 Client.Query
함수를 사용합니다.
//update data in the table
func updateRows(client *nosqldb.Client, err error, tableName string, querystmt string)(){
prepReq := &nosqldb.PrepareRequest{
Statement: querystmt,
}
prepRes, err := client.Prepare(prepReq)
if err != nil {
fmt.Printf("Prepare failed: %v\n", err)
return
}
queryReq := &nosqldb.QueryRequest{
PreparedStatement: &prepRes.PreparedStatement, }
var results []*types.MapValue
for {
queryRes, err := client.Query(queryReq)
if err != nil {
fmt.Printf("Upsert failed: %v\n", err)
return
}
res, err := queryRes.GetResults()
if err != nil {
fmt.Printf("GetResults() failed: %v\n", err)
return
}
results = append(results, res...)
if queryReq.IsDone() {
break
}
}
for i, r := range results {
fmt.Printf("\t%d: %s\n", i+1, jsonutil.AsJSON(r.Map()))
}
fmt.Printf("Updated data in the table: \n")
}
upd_json_addnode := `UPDATE stream_acct acct1 ADD acct1.acct_data.contentStreamed.seriesInfo[1].episodes {
"date" : "2022-04-26",
"episodeID" : 43,
"episodeName" : "Season 2 episode 2",
"lengthMin" : 45,
"minWatched" : 45} WHERE acct_Id=2 RETURNING *`
updateRows(client, err,tableName,upd_json_addnode)
upd_json_delnode := `UPDATE stream_acct acct1 REMOVE acct1.acct_data.contentStreamed.seriesInfo[1].episodes[1]
WHERE acct_Id=2 RETURNING *`
updateRows(client, err,tableName,upd_json_delnode)
질의를 실행하려면 query
메소드를 사용합니다.
/*updates data in the table*/
async function updateData(handle,querystmt) {
const opt = {};
try {
do {
const result = await handle.query(querystmt, opt);
opt.continuationKey = result.continuationKey;
} while(opt.continuationKey);
} catch(error) {
console.error(' Error: ' + error.message);
}
}
interface StreamInt {
acct_Id: Integer;
profile_name: String;
account_expiry: TIMESTAMP;
acct_data: JSON;
}
async function updateData(handle: NoSQLClient,querystmt: string) {
const opt = {};
try {
do {
const result = await handle.query<StreamInt>(querystmt, opt);
for(let row of result.rows) {
console.log(' %O', row);
}
opt.continuationKey = result.continuationKey;
} while(opt.continuationKey);
} catch(error) {
console.error(' Error: ' + error.message);
}
}
const upd_json_addnode =
`UPDATE stream_acct acct1 ADD acct1.acct_data.contentStreamed.seriesInfo[1].episodes {
"date" : "2022-04-26",
"episodeID" : 43,
"episodeName" : "Season 2 episode 2",
"lengthMin" : 45,
"minWatched" : 45} WHERE acct_Id=2 RETURNING *`
await updateData(handle,upd_json_addnode);
console.log("New data node added in the table");
const upd_json_delnode =
'UPDATE stream_acct acct1 REMOVE acct1.acct_data.contentStreamed.seriesInfo[1].episodes[1]
WHERE acct_Id=2 RETURNING *'
await updateData(handle,upd_json_delnode);
console.log("New Data node removed from the table");
UPDATE SQL 명령을 사용하여 테이블의 JSON 객체에서 데이터를 추가 및 제거할 수 있습니다. 질의를 실행하려면 QueryAsync
메소드를 호출하거나 GetQueryAsyncEnumerable
메소드를 호출하고 결과 비동기 열거 가능을 반복할 수 있습니다.
private static async Task updateData(NoSQLClient client,String querystmt){
var queryEnumerable = client.GetQueryAsyncEnumerable(querystmt);
}
private const string upd_json_addnode =
@"UPDATE stream_acct acct1 ADD acct1.acct_data.contentStreamed.seriesInfo[1].episodes {
""date"" : ""2022-04-26"",
""episodeID"" : 43,
""episodeName"" : ""Season 2 episode 2"",
""lengthMin"" : 45,
""minWatched"" : 45} WHERE acct_Id=2 RETURNING *";
await updateData(client,upd_json_addnode);
Console.WriteLine("New data node added in the table");
private const string upd_json_delnode =
"UPDATE stream_acct acct1 REMOVE acct1.acct_data.contentStreamed.seriesInfo[1].episodes[1]
WHERE acct_Id=2 RETURNING *";
await updateData(client,upd_json_delnode);
Console.WriteLine("New Data node removed from the table");
질의 API를 사용하여 데이터 삭제
QueryRequest
API를 사용하여 필터 조건을 충족하는 하나 이상의 행을 NoSQL 테이블에서 삭제할 수 있습니다.
Query 요청에서 DELETE SQL 명령을 사용하여 데이터를 삭제할 수 있습니다. 질의를 실행하려면 NoSQLHandle.query()
API를 사용합니다.
//delete rows based on a filter condition
private static void deleteRows(NoSQLHandle handle, String sqlstmt) throws Exception {
QueryRequest queryRequest = new QueryRequest().setStatement(sqlstmt);
handle.query(queryRequest);
System.out.println("Deleted row(s) from table " + tableName);
}
String del_stmt ="DELETE FROM stream_acct acct1 WHERE
acct1.acct_data.firstName=\"Adelaide\" AND acct1.acct_data.lastName=\"Willard\"";
/*delete rows based on a filter condition*/
deleteRows(handle,del_stmt);
Query 요청에서 DELETE SQL 명령을 사용하여 데이터를 삭제할 수 있습니다. 질의를 실행하려면 borneo.NoSQLHandle.query()
메소드를 사용합니다.
#del row(s) with a filter condition
def delete_rows(handle,sqlstmt):
request = QueryRequest().set_statement(sqlstmt)
result = handle.query(request)
print('Deleted data from table: stream_acct')
# delete data based on a filter condition
del_stmt ='''DELETE FROM stream_acct acct1 WHERE
acct1.acct_data.firstName="Adelaide" AND acct1.acct_data.lastName="Willard"'''
delete_rows(handle,del_stmt)
Query 요청에서 DELETE SQL 명령을 사용하여 데이터를 삭제할 수 있습니다. 질의를 실행하려면 Client.Query
함수를 사용합니다.
//delete rows based on a filter condition
func deleteRows(client *nosqldb.Client, err error, tableName string, querystmt string)(){
prepReq := &nosqldb.PrepareRequest{
Statement: querystmt,
}
prepRes, err := client.Prepare(prepReq)
if err != nil {
fmt.Printf("Prepare failed: %v\n", err)
return
}
queryReq := &nosqldb.QueryRequest{
PreparedStatement: &prepRes.PreparedStatement, }
var results []*types.MapValue
for {
queryRes, err := client.Query(queryReq)
if err != nil {
fmt.Printf("Upsert failed: %v\n", err)
return
}
res, err := queryRes.GetResults()
if err != nil {
fmt.Printf("GetResults() failed: %v\n", err)
return
}
results = append(results, res...)
if queryReq.IsDone() {
break
}
}
for i, r := range results {
fmt.Printf("\t%d: %s\n", i+1, jsonutil.AsJSON(r.Map()))
}
fmt.Printf("Deleted data from the table: %v\n",tableName)
}
delete_stmt := `DELETE FROM stream_acct acct1 WHERE
acct1.acct_data.firstName="Adelaide" AND acct1.acct_data.lastName="Willard"`
deleteRows(client, err,tableName,delete_stmt)
Query 요청에서 DELETE SQL 명령을 사용하여 데이터를 삭제할 수 있습니다. 질의를 실행하려면 query
메소드를 사용합니다.
/*deletes data based on a filter conditioin */
async function deleteRows(handle,querystmt) {
const opt = {};
try {
do {
const result = await handle.query(querystmt, opt);
opt.continuationKey = result.continuationKey;
} while(opt.continuationKey);
} catch(error) {
console.error(' Error: ' + error.message);
}
}
await deleteRows(handle,del_stmt);
console.log("Rows deleted");
async function deleteRows(handle: NoSQLClient,querystmt: string) {
const opt = {};
try {
do {
const result = await handle.query<StreamInt>(querystmt, opt);
for(let row of result.rows) {
console.log(' %O', row);
}
opt.continuationKey = result.continuationKey;
} while(opt.continuationKey);
} catch(error) {
console.error(' Error: ' + error.message);
}
}
await deleteRows(handle,del_stmt);
console.log("Rows deleted");
Query 요청에서 DELETE SQL 명령을 사용하여 데이터를 삭제할 수 있습니다. 질의를 실행하려면 QueryAsync
메소드를 호출하거나 GetQueryAsyncEnumerable
메소드를 호출하고 결과 비동기 열거 가능을 반복할 수 있습니다.
private static async Task deleteRows(NoSQLClient client,String querystmt){
var queryEnumerable = client.GetQueryAsyncEnumerable(querystmt);
}
await deleteRows(client,del_stmt);
Console.WriteLine("Rows removed from the table");
API를 사용하여 단일 행 삭제
DeleteRequest
API를 사용하고 기본 키를 사용하여 단일 행을 삭제할 수 있습니다.
DeleteRequest
API를 사용하여 무조건 및 조건부 삭제를 수행할 수 있습니다.
- 기존 행을 삭제합니다. 이는 기본값입니다.
- 행이 있고 해당 버전이 특정 버전과 일치하는 경우에만 성공합니다. 이 경우
setMatchVersion
를 사용합니다.
//delete row based on primary KEY
private static void delRow(NoSQLHandle handle, MapValue m1) throws Exception {
DeleteRequest delRequest = new DeleteRequest().setKey(m1).setTableName(tableName);
DeleteResult del = handle.delete(delRequest);
if (del.getSuccess()) {
System.out.println("Delete succeed");
}
else {
System.out.println("Delete failed");
}
}
/*delete a single row*/
MapValue m1= new MapValue();
m1.put("acct_Id",1);
delRow(handle,m1);
기본 키 값을 사용하여 borneo.DeleteRequest
를 사용하여 단일 행이 삭제됩니다.
#del row with a primary KEY
def del_row(handle,table_name):
request = DeleteRequest().set_key({'acct_Id': 1}).set_table_name(table_name)
result = handle.delete(request)
print('Deleted data from table: stream_acct')
# delete row based on primary key
del_row(handle,'stream_acct')
DeleteRequest
는 테이블에서 행을 삭제하는 데 사용됩니다. 행은 DeleteRequest.Key
에 지정된 기본 키를 사용하여 식별됩니다.
//delete with primary key
func delRow(client *nosqldb.Client, err error, tableName string)(){
key := &types.MapValue{}
key.Put("acct_Id",1)
delReq := &nosqldb.DeleteRequest{
TableName: tableName,
Key: key,
}
delRes, err := client.Delete(delReq)
if err != nil {
fmt.Printf("failed to delete a row: %v", err)
return
}
if delRes.Success {
fmt.Println("Delete succeeded")
}
}
delRow(client, err,tableName)
delete
메소드를 사용하여 테이블에서 행을 삭제합니다. 메소드 세부 정보는 NoSQLClient 클래스를 참조하십시오.
행의 테이블 이름과 기본 키를 전달해야 합니다. 또한 get 또는 put 메소드에서 이전에 반환한 행의 RowVersion
을 지정하여 삭제 작업을 조건부로 수행할 수 있습니다.
/*delete row based on primary key*/
async function delRow(handle) {
try {
/* Unconditional delete, should succeed.*/
var result = await handle.delete(TABLE_NAME, { acct_Id: 1 });
/* Expected output: delete succeeded*/
console.log('delete ' + result.success ? 'succeeded' : 'failed');
} catch(error) {
console.error(' Error: ' + error.message);
}
}
await delRow(handle);
console.log("Row deleted based on primary key");
interface StreamInt {
acct_Id: Integer;
profile_name: String;
account_expiry: TIMESTAMP;
acct_data: JSON;
}
/*delete row based on primary key*/
async function delRow(handle: NoSQLClient) {
try {
/* Unconditional delete, should succeed.*/
var result = await handle.delete<StreamInt>(TABLE_NAME, { acct_Id: 1 });
/* Expected output: delete succeeded*/
console.log('delete ' + result.success ? 'succeeded' : 'failed');
} catch(error) {
console.error(' Error: ' + error.message);
}
}
await delRow(handle);
console.log("Row deleted based on primary key");
행을 삭제하려면 DeleteAsync
메소드를 사용합니다. 삭제할 행의 테이블 이름과 primary key를 전달합니다. 이 메소드는 기본 키를 MapValue로 사용합니다. 필드 이름은 테이블 기본 키 열 이름과 동일해야 합니다.
DeleteAsync
및 DeleteIfVersionAsync
메소드는 Task<DeleteResult<RecordValue>>
를 반환합니다. DeleteResult 인스턴스에 삭제 작업의 성공 상태가 포함되어 있습니다. 제공된 기본 키가 있는 행이 존재하지 않거나 조건부 삭제이며 제공된 행 버전이 기존 행 버전과 일치하지 않는 경우 삭제 작업이 실패할 수 있습니다.
private static async Task delRow(NoSQLClient client){
var primaryKey = new MapValue
{
["acct_Id"] = 1
};
// Unconditional delete, should succeed.
var deleteResult = await client.DeleteAsync(TableName, primaryKey);
// Expected output: Delete succeeded.
Console.WriteLine("Delete {0}.",deleteResult.Success ? "succeeded" : "failed");
}
await delRow(client);
Console.WriteLine("Row deleted based on primary key");
API를 사용하여 여러 행 삭제
MultiDeleteRequest
API를 사용하여 NoSQL 테이블에서 행을 두 개 이상 삭제할 수 있습니다.
MultiDeleteRequest
를 사용하여 원자 작업에서 테이블에서 여러 행을 삭제할 수 있습니다. 사용된 키는 부분일 수 있지만 샤드 키에 있는 모든 필드를 포함해야 합니다. 키 범위를 삭제하도록 범위를 지정할 수 있습니다. 이 작업은 단일 작업에서 수정할 수 있는 최대 데이터 양을 초과할 수 있으므로 연속 키를 사용하여 작업을 계속할 수 있습니다.
테이블의 기본 키가 <YYYYMM, 시간 기록>이고 해당 샤드 키가 YYYYMM인 경우 동일한 월에 적중된 모든 레코드는 동일한 샤드에 포함됩니다. MultiDeleteRequest
클래스를 사용하여 특정 월의 시간 기록 값 범위를 삭제할 수 있습니다.
다양한 클래스 및 메소드에 대한 자세한 내용은 Oracle NoSQL Java SDK API Reference를 참조하십시오.
//Delete multiple rows from the table
private static void delMulRows(NoSQLHandle handle,int pinval) throws Exception {
MapValue key = new MapValue().put("pin", 1234567);
MultiDeleteRequest multiDelRequest = new MultiDeleteRequest()
.setKey(key)
.setTableName(tableName);
MultiDeleteResult mRes = handle.multiDelete(multiDelRequest);
System.out.println("MultiDelete result = " + mRes);
}
/*delete multiple rows using shard key*/
delMulRows(handle,1234567);
borneo.MultiDeleteRequest
클래스를 사용하여 단일 원자 작업에서 다중 삭제를 수행할 수 있습니다.
다양한 클래스 및 메소드에 대한 자세한 내용은 Oracle NoSQL Python SDK API Reference를 참조하십시오.
#delete multiple rows
def multirow_delete(handle,table_name,pinval):
request = MultiDeleteRequest().set_table_name(table_name).set_key({'pin': pinval})
result = handle.multi_delete(request)
)
/*delete multiple rows using shard key*/
multirow_delete(handle,'examplesAddress',1234567)
MultiDelete
메소드를 사용하여 단일 원자 작업에서 테이블에서 여러 행을 삭제할 수 있습니다.
다양한 클래스 및 메소드에 대한 자세한 내용은 Oracle NoSQL Go SDK API Reference를 참조하십시오.
//delete multiple rows
func delMulRows(client *nosqldb.Client, err error, tableName string,pinval int)(){
shardKey := &types.MapValue{}
shardKey.Put("pin", pinval)
multiDelReq := &nosqldb.MultiDeleteRequest{
TableName: tableName,
Key: shardKey,
}
multiDelRes, err := client.MultiDelete(multiDelReq)
if err != nil {
fmt.Printf("failed to delete multiple rows: %v", err)
return
}
fmt.Printf("MultiDelete result=%v\n", multiDelRes)
}
/*delete multiple rows using shard key*/
delMulRows(client, err,tableName,1234567)
deleteRange
메소드를 사용하여 단일 원자 작업에서 동일한 샤드 키를 갖는 여러 행을 삭제할 수 있습니다.
//deletes multiple rows
async function mulRowDel(handle,pinval){
try {
/* Unconditional delete, should succeed.*/
var result = await handle.deleteRange(TABLE_NAME, { pin: pinval });
/* Expected output: delete succeeded*/
console.log('delete ' + result.success ? 'succeeded' : 'failed');
} catch(error) {
console.error(' Error: ' + error.message);
}
}
/*delete multiple rows using shard key*/
await mulRowDel(handle,1234567);
interface StreamInt {
acct_Id: Integer;
profile_name: String;
account_expiry: TIMESTAMP;
acct_data: JSON;
}
//deletes multiple rows
async function mulRowDel(handle: NoSQLClient,pinVal: Integer){
try {
/* Unconditional delete, should succeed.*/
var result = await handle.deleteRange<StreamInt>(TABLE_NAME, { pin: pinval });
/* Expected output: delete succeeded*/
console.log('delete ' + result.success ? 'succeeded' : 'failed');
} catch(error) {
console.error(' Error: ' + error.message);
}
}
/*delete multiple rows using shard key*/
await mulRowDel(handle,1234567);
DeleteRangeAsync
메소드를 사용하여 단일 원자 작업에서 동일한 샤드 키를 갖는 여러 행을 삭제할 수 있습니다.
//delete multiple rows
private static async Task mulDelRows(NoSQLClient client,int pinval){
var parKey = new MapValue {["pin"] = pinval};
var options = new DeleteRangeOptions();
do
{
var result = await client.DeleteRangeAsync(TableName,parKey,options);
Console.WriteLine($"Deleted {result.DeletedCount} row(s)");
options.ContinuationKey = result.ContinuationKey;
} while(options.ContinuationKey != null);
}
/*delete multiple rows using shard key*/
await mulDelRows(client,1234567);