speed & reliability - Printable Version +- LiveCloud Forums (https://forums.livecloud.io) +-- Forum: General (https://forums.livecloud.io/forumdisplay.php?fid=1) +--- Forum: General (https://forums.livecloud.io/forumdisplay.php?fid=3) +--- Thread: speed & reliability (/showthread.php?tid=59) Pages:
1
2
|
RE: speed & reliability - sltfn - 08-13-2019 (07-25-2019, 09:35 PM)mark_talluto Wrote: The value of the batch routines is that you can communicate with multiple records on multiple tables in the same call. Using batch can turn 10k record transactions into a single call. Thank you mark_talluto. Apologies for the delay in response. Other projects have required my attention. efrain.c's code above helps but I'm trying to wrap my head around arrays and using cdb_batchUpdate. If anyone can point me in the right direction, I'd appreciate it. My script takes a variable containing lines of tab-delimited data and updates records in a table. My data looks like this (see attachment). The top row in bold contains the names of the keys. [attachment=27] on writeRecordToDB global myVar set itemDelimiter to tab put "thisCustID" & tab & "thisFullName" & tab & "thisLastName" & tab & "thisBalance" & tab & "thisCode" & tab & "thisStatus" & tab & "thisRecordID" into theLineItems put "CUSTOMERS" into tTable put "cloud" into tTarget set itemDelimiter to tab repeat for each line DBrecordLine of myVar repeat with itemCount = 1 to (the number of items of theLineItems) do "put item" && itemCount && "of DBrecordLine into" && (item itemCount of theLineItems) end repeat put thisRecordID into tRecordID put thisCustID into tDataA["CUSTOMER_ID"] put thisFullName into tDataA["FULL_NAME"] put thisLastName into tDataA["LAST_NAME"] put thisBalance into tDataA["BALANCE"] put thisCode into tDataA["CODE"] put thisStatus into tDataA["STATUS"] cdb_update tDataA,tTable,tRecordID,tTarget end repeat -- looping through each line of myVar end writeRecordToDB How would I use cdb_batchUpdate to accomplish this without needing to update one record at a time? Thanks in advance. RE: speed & reliability - efrain.c - 08-14-2019 Hi sltfn, Here is one way to use cdb_batchUpdate in your code: global myVar set itemDelimiter to tab put "thisCustID" & tab & "thisFullName" & tab & "thisLastName" & tab & "thisBalance" & tab & "thisCode" & tab & "thisStatus" & tab & "thisRecordID" into theLineItems put cdb_tableID("CUSTOMERS") into tTableID put "cloud" into tTarget set itemDelimiter to tab repeat for each line DBrecordLine of myVar repeat with itemCount = 1 to (the number of items of theLineItems) do "put item" && itemCount && "of DBrecordLine into" && (item itemCount of theLineItems) end repeat put thisRecordID into tRecordID put thisCustID into tDataA[tTableID][tRecordID]["CUSTOMER_ID"] put thisFullName into tDataA[tTableID][tRecordID]["FULL_NAME"] put thisLastName into tDataA[tTableID][tRecordID]["LAST_NAME"] put thisBalance into tDataA[tTableID][tRecordID]["BALANCE"] put thisCode into tDataA[tTableID][tRecordID]["CODE"] put thisStatus into tDataA[tTableID][tRecordID]["STATUS"] end repeat -- looping through each line of myVar cdb_batchUpdate tDataA, tTarget There are a couple changes to note. cdb_batchUpdate uses tableID instead of table name. tDataA is structured differently to allow updates across multiple records across multiple tables. cdb_batchUpdate is placed after the repeat, the repeat structures the data and cdb_batchUpdate sends all the updates as a single request. Hope this helps. Let us know if you have any questions. RE: speed & reliability - sltfn - 08-15-2019 (08-14-2019, 04:29 PM)efrain.c Wrote: Hi sltfn, Thanks, efrain. This is very helpful. Now I just need to change some routines used earlier in my processing to work with batch updating and test. Much appreciated. |