Skip to content

Commit

Permalink
0001645: MySQL bulk loader does not load NULL
Browse files Browse the repository at this point in the history
  • Loading branch information
erilong committed Mar 14, 2014
1 parent 3e40597 commit 09b15c2
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 2 deletions.
Expand Up @@ -76,7 +76,7 @@ public void write(CsvData data) {
try {
String formattedData = CsvUtils.escapeCsvData(
data.getParsedData(CsvData.ROW_DATA), '\n', '"',
CsvWriter.ESCAPE_MODE_DOUBLED);
CsvWriter.ESCAPE_MODE_DOUBLED, "\\N");
this.stagedInputFile.getOutputStream().write(formattedData.getBytes());
loadedRows++;
} catch (Exception ex) {
Expand Down
Expand Up @@ -246,6 +246,14 @@ public void setForceQualifier(boolean forceQualifier) {
userSettings.ForceQualifier = forceQualifier;
}

public String getNullString() {
return userSettings.NullString;
}

public void setNullString(String nullString) {
userSettings.NullString = nullString;
}

/**
* Writes another column of data to this record.
*
Expand Down Expand Up @@ -278,7 +286,7 @@ public void write(String content, boolean preserveSpaces) throws IOException {
// BEGIN <erilong@users.sourceforge.net>
// We want a null to be an empty unquoted element
if (content == null) {
content = "";
content = userSettings.NullString;
textQualify = false;
}
// We want an empty string to be a quoted element
Expand Down Expand Up @@ -555,6 +563,8 @@ private class UserSettings {
public int EscapeMode;

public boolean ForceQualifier;

public String NullString;

public UserSettings() {
TextQualifier = Letters.QUOTE;
Expand All @@ -564,6 +574,7 @@ public UserSettings() {
Comment = Letters.POUND;
EscapeMode = ESCAPE_MODE_DOUBLED;
ForceQualifier = false;
NullString = "";
}
}

Expand Down
Expand Up @@ -103,6 +103,10 @@ public static String escapeCsvData(String[] data, char recordDelimiter, char tex
}

public static String escapeCsvData(String[] data, char recordDelimiter, char textQualifier, int escapeMode) {
return escapeCsvData(data, recordDelimiter, textQualifier, escapeMode, null);
}

public static String escapeCsvData(String[] data, char recordDelimiter, char textQualifier, int escapeMode, String nullString) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
CsvWriter writer = new CsvWriter(new OutputStreamWriter(out), ',');
writer.setEscapeMode(escapeMode);
Expand All @@ -114,6 +118,9 @@ public static String escapeCsvData(String[] data, char recordDelimiter, char tex
writer.setUseTextQualifier(true);
writer.setForceQualifier(true);
}
if (nullString != null) {
writer.setNullString(nullString);
}
try {
writer.writeRecord(data);
} catch (IOException e) {
Expand Down

0 comments on commit 09b15c2

Please sign in to comment.