diff --git beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java index 75f7d38..c1a5dee 100644 --- beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java +++ beeline/src/java/org/apache/hive/beeline/BeeLineOpts.java @@ -78,6 +78,8 @@ private String outputFormat = "table"; private boolean trimScripts = true; private boolean allowMultiLineCommand = true; + private boolean wrapColumns = true; + private String wrapCharacter = "\'"; //This can be set for old behavior of nulls printed as empty strings private boolean nullEmptyString = false; @@ -490,5 +492,21 @@ public String getNullString(){ public void setHiveConfVariables(Map hiveConfVariables) { this.hiveConfVariables = hiveConfVariables; } + + public void setWrapColumns(boolean wrapColumns) { + this.wrapColumns = wrapColumns; + } + + public boolean getWrapColumns() { + return wrapColumns; + } + + public void setWrapCharacter(String wrapCharacter) { + this.wrapCharacter = wrapCharacter; + } + + public String getWrapCharacter() { + return wrapCharacter; + } } diff --git beeline/src/java/org/apache/hive/beeline/SeparatedValuesOutputFormat.java beeline/src/java/org/apache/hive/beeline/SeparatedValuesOutputFormat.java index 7853c3f..504b72f 100644 --- beeline/src/java/org/apache/hive/beeline/SeparatedValuesOutputFormat.java +++ beeline/src/java/org/apache/hive/beeline/SeparatedValuesOutputFormat.java @@ -34,6 +34,7 @@ */ private final BeeLine beeLine; private char separator; + private char wrapper; public SeparatedValuesOutputFormat(BeeLine beeLine, char separator) { this.beeLine = beeLine; @@ -52,11 +53,23 @@ public int print(Rows rows) { public void printRow(Rows rows, Rows.Row row) { String[] vals = row.values; StringBuilder buf = new StringBuilder(); + String wrapperArg = beeLine.getOpts().getWrapCharacter(); + if (wrapperArg.length() > 1 && wrapperArg.charAt(0) == '\\') { + wrapper = wrapperArg.charAt(1); + } else { + wrapper = wrapperArg.charAt(0); + } + for (int i = 0; i < vals.length; i++) { - buf.append(buf.length() == 0 ? "" : "" + getSeparator()) - .append('\'') - .append(vals[i] == null ? "" : vals[i]) - .append('\''); + if (beeLine.getOpts().getWrapColumns()) { + buf.append(buf.length() == 0 ? "" : "" + getSeparator()) + .append('\'') + .append(vals[i] == null ? "" : vals[i]) + .append('\''); + } else { + buf.append(buf.length() == 0 ? "" : "" + getSeparator()) + .append(vals[i] == null ? "" : vals[i]); + } } beeLine.output(buf.toString()); } diff --git beeline/src/main/resources/BeeLine.properties beeline/src/main/resources/BeeLine.properties index 390d062..e4e1070 100644 --- beeline/src/main/resources/BeeLine.properties +++ beeline/src/main/resources/BeeLine.properties @@ -155,6 +155,8 @@ cmd-usage: Usage: java org.apache.hive.cli.beeline.BeeLine \n \ \ --color=[true/false] control whether color is used for display\n \ \ --showHeader=[true/false] show column names in query results\n \ \ --headerInterval=ROWS; the interval between which heades are displayed\n \ +\ --wrapColumns=[true/false] wrap columns for cvs/tsv formats with quote character\n \ +\ --wrapCharacter=WRAPCHARACTER the quote character to wrap columns in cvs/tsv output\n \ \ --fastConnect=[true/false] skip building table/column list for tab-completion\n \ \ --autoCommit=[true/false] enable/disable automatic transaction commit\n \ \ --verbose=[true/false] show verbose error messages and debug info\n \