From 31fd1a7a62bdc4a6e6323946a87d6115128a84e9 Mon Sep 17 00:00:00 2001 From: elong Date: Mon, 10 Dec 2018 15:06:30 -0500 Subject: [PATCH] 0003825: Oracle bulk loader using SQL*Loader sqlldr --- .../symmetric/io/OracleBulkDatabaseWriter.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/symmetric-client/src/main/java/org/jumpmind/symmetric/io/OracleBulkDatabaseWriter.java b/symmetric-client/src/main/java/org/jumpmind/symmetric/io/OracleBulkDatabaseWriter.java index 3476ec9d98..560eaa5f07 100644 --- a/symmetric-client/src/main/java/org/jumpmind/symmetric/io/OracleBulkDatabaseWriter.java +++ b/symmetric-client/src/main/java/org/jumpmind/symmetric/io/OracleBulkDatabaseWriter.java @@ -29,6 +29,7 @@ import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Hex; +import org.apache.commons.lang.ArrayUtils; import org.jumpmind.db.model.Column; import org.jumpmind.db.model.Table; import org.jumpmind.db.util.BasicDataSourcePropertyConstants; @@ -76,7 +77,7 @@ public OracleBulkDatabaseWriter(ISymmetricEngine engine, DatabaseWriterSettings if (sqlLoader == null) { sqlLoader = ""; } - sqlLoader += File.separator + "sqlldr"; + sqlLoader += File.separator + "bin" + File.separator + "sqlldr"; dbUser = engine.getParameterService().getString(BasicDataSourcePropertyConstants.DB_POOL_USER); if (dbUser != null && dbUser.startsWith(SecurityConstants.PREFIX_ENC)) { dbUser = engine.getSecurityService().decrypt(dbUser.substring(SecurityConstants.PREFIX_ENC.length())); @@ -222,11 +223,14 @@ protected void flush() { try { // TODO: add options for direct=true rows=10000 String path = stagedInputFile.getFile().getParent(); - ProcessBuilder pb = new ProcessBuilder("\"" + sqlLoader + "\" \"" + dbUser + "\"/\"" + dbPassword + - "\" control=\"" + stagedInputFile.getFile().getPath() + "\"" + - " silent=header"); - pb.redirectErrorStream(true); + String[] cmd = { sqlLoader, dbUser + "/" + dbPassword, + "control=" + stagedInputFile.getFile().getPath(), "silent=header" }; + if (logger.isDebugEnabled()) { + logger.debug("Running: {} ", ArrayUtils.toString(cmd)); + } + ProcessBuilder pb = new ProcessBuilder(cmd); pb.directory(new File(path)); + pb.redirectErrorStream(true); Process process = null; try { process = pb.start();