1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| oracle = oracleSource.getConnection();
sqlServer = sqlserverSource.getConnection();
sqlServer.setAutoCommit(false);
QueryHelper helper = helpers.get(jobName);
String table = helper.table;
table = table.toUpperCase();
LinkedHashMap<String, Column> oracleColumns = getTableColumns(oracle.getMetaData(), table);
LinkedHashMap<String, Column> sqlServerColumns = getTableColumns(sqlServer.getMetaData(), table);
List<String> commonColumns = new ArrayList<String>();
Set<Integer> codes = new HashSet<Integer>();
for (String column : oracleColumns.keySet()) {
if (sqlServerColumns.containsKey(column) && (helper.selectedColumns.isEmpty() || helper.selectedColumns.contains(column))) {
commonColumns.add(column);
codes.add(oracleColumns.get(column).type);
}
}
jobLogger = new JobLogger(job, commonColumns);
if (lastAcceptanceDate != null && new Date().after(lastAcceptanceDate)) {
jobLogger.log("CANCELLING JOB, too late !");
return;
}
jobLogger.log(".Used SQL Types: " + codes);
String queryString = "select * " + helper.buildFromPartOracle(month);
String insertString = "insert into " + table + " (" + StringUtils.join(commonColumns, ", ") + ") VALUES (" + StringUtils.repeat("?", ", ", commonColumns.size()) + ")";
PreparedStatement query = oracle.prepareStatement(queryString);
PreparedStatement insertStatement = sqlServer.prepareStatement(insertString);
jobLogger.log(".ORACLE QUERY: " + queryString);
StopWatch watch = new StopWatch();
watch.start();
query.setFetchSize(FETCH_SIZE);
ResultSet result = query.executeQuery();
while (result.next()) {
jobLogger.log(String.format("resultat : %s",result.getRow()));
} |
Partager