{
DatabaseTarget dbTarget=null;
String dataFileName=params.dataFile;
boolean success = false;
try {
CROM root = DbUtils.createCromTree(params.jtrFile);
CROM table=root;
boolean bIsFlat=table.isFlat();
if(bIsFlat)table=root.getChild(0);
dbTarget=new DatabaseTarget(params);
dbTarget.writeLog("Read structure file: ", params.jtrFile);
dbTarget.defineBeginEndQuote(root);
dbTarget.bIncludeNulls=params.includeNulls;
OutputStreamWriter targetDataFile=null;
TextDocReader reader=null;
try {
dbTarget.runPreTargetStatement(params);
targetDataFile= new OutputStreamWriter(new FileOutputStream(dataFileName+".final"),"UTF-8");//new RandomAccessFile(new File(dataFileName+".final"),"rw");
reader=new TextDocReader(new File(dataFileName), "UTF-8");
dbTarget.writeLog("Processing target file: ", dataFileName);
JbNode jbRoot=reader.parse_all();
List<JbNode> rows=jbRoot.m_children;
for(JbNode row: rows){
String line=row.getStr(reader);
char override=dbTarget.parseCsvValues(line);
if(!bIsFlat){
String id=dbTarget.values.get(0);
table=DbUtils.findTable(id, table);
}
dbTarget.loadColumns(table, bIsFlat);
CROM identity=dbTarget.preWriteToDb(table);
if(dbTarget.writeToDb(table, override) != MODE.INSERT)identity=null;
if(identity!=null)dbTarget.postWriteToDb(table, identity);
table.writeDbRecord(targetDataFile);
}
success = true;