diff --git a/src/java/org/apache/sqoop/mapreduce/OracleUpsertOutputFormat.java b/src/java/org/apache/sqoop/mapreduce/OracleUpsertOutputFormat.java
index 88754e7..79a4efd 100644
--- a/src/java/org/apache/sqoop/mapreduce/OracleUpsertOutputFormat.java
+++ b/src/java/org/apache/sqoop/mapreduce/OracleUpsertOutputFormat.java
@@ -22,12 +22,14 @@
 import java.sql.SQLException;
 import java.util.LinkedHashSet;
 import java.util.Set;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.mapreduce.RecordWriter;
 import org.apache.hadoop.mapreduce.TaskAttemptContext;
 import com.cloudera.sqoop.lib.SqoopRecord;
 import com.cloudera.sqoop.mapreduce.UpdateOutputFormat;
+import org.apache.sqoop.manager.oracle.OracleUtils;
 
 /**
  * Update an existing table with new value if the table already
@@ -71,7 +73,7 @@
       // lookup table for update columns
       Set<String> updateKeyLookup = new LinkedHashSet<String>();
       for (String updateKey : updateCols) {
-        updateKeyLookup.add('"' + updateKey + '"');
+        updateKeyLookup.add(OracleUtils.escapeIdentifier(updateKey, isOracleEscapingDisabled()));
       }
 
       StringBuilder sb = new StringBuilder();
@@ -85,7 +87,8 @@
         } else {
           sb.append(" AND ");
         }
-        sb.append('"' + updateCols[i] + '"').append(" = ?");
+        sb.append(OracleUtils.escapeIdentifier(updateCols[i], isOracleEscapingDisabled()));
+        sb.append(" = ?");
       }
       sb.append(" )");
 
@@ -127,5 +130,9 @@
 
       return sb.toString();
     }
+
+    private boolean isOracleEscapingDisabled() {
+      return OracleUtils.isOracleEscapingDisabled(getConf());
+    }
   }
 }
diff --git a/src/test/com/cloudera/sqoop/manager/OracleExportTest.java b/src/test/com/cloudera/sqoop/manager/OracleExportTest.java
index 382eb92..07d672f 100644
--- a/src/test/com/cloudera/sqoop/manager/OracleExportTest.java
+++ b/src/test/com/cloudera/sqoop/manager/OracleExportTest.java
@@ -277,4 +277,18 @@
         "--update-key", "ID", "--update-mode", "allowinsert", "--oracle-escaping-disabled", "false")));
     verifyExport(TOTAL_RECORDS);
   }
+
+  /** Make sure mixed update/insert export work correctly. */
+  public void testUpsertTextExportWithEscapingDisabled() throws IOException, SQLException {
+    final int TOTAL_RECORDS = 10;
+    createTextFile(0, TOTAL_RECORDS, false);
+    createTable();
+    // first time will be insert.
+    runExport(getArgv(true, 10, 10, newStrArray(null,
+        "--update-key", "ID", "--update-mode", "allowinsert", "--oracle-escaping-disabled", "true")));
+    // second time will be update.
+    runExport(getArgv(true, 10, 10, newStrArray(null,
+        "--update-key", "ID", "--update-mode", "allowinsert", "--oracle-escaping-disabled", "true")));
+    verifyExport(TOTAL_RECORDS);
+  }
 }
