X12 to Database: Batch Processing Example
Contents
The following example shows the To Translator code to parse an incoming message with the Vmd that ships with Iguana (other/example/270v3.vmd). Each transaction set is then parsed and the data is mapped from the transaction set into a new row of the table structure. All rows of the table (one per transaction set) are finally committed to the database with a single conn:merge()call.
conn = db.connect{<add DB connection info>}
function main(Data)
local In, Name =x12.parse{vmd='example/270v3.vmd',data=Data}
local OutTables=db.tables{vmd='example/270v3.vmd', name=Name}
local TableRow = 1
-- Iterate over functional groups
for FGindex = 1, #In.InterchangeEnvelope.FunctionalGroup do
print (In.InterchangeEnvelope.FunctionalGroup[FGindex])
-- Iterate over transaction sets
for TSindex = 1, #In.InterchangeEnvelope.FunctionalGroup[FGindex].TransactionSet do
local TS = In.InterchangeEnvelope.FunctionalGroup[FGindex].TransactionSet[TSindex]
processTS (TS, OutTables, TableRow)
TableRow = TableRow + 1
end
end
print (OutTables.tblL2000a)
-- conn:merge { }
return true
end
function processTS (TS, OutTables, TableRow)
local Table = OutTables.tblL2000a
Table[TableRow].HLHierarchicalLevelCode = TS["Position 010"].Grp010ABCD[1].Loop2000A.HL[3]
Table[TableRow].HLHierarchicalChildCode = TS["Position 010"].Grp010ABCD[1].Loop2000A.HL[4]
-- Populate the rest of the columns in the table
-- ...
end
Back to: Introduction