You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by br...@apache.org on 2018/09/19 09:04:41 UTC
[24/48] commons-csv git commit: [CSV-209] Create CSVFormat.ORACLE
preset. Also: Fix and complete documentation for other formats.
[CSV-209] Create CSVFormat.ORACLE preset. Also: Fix and complete
documentation for other formats.
Project: http://git-wip-us.apache.org/repos/asf/commons-csv/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-csv/commit/a9daab69
Tree: http://git-wip-us.apache.org/repos/asf/commons-csv/tree/a9daab69
Diff: http://git-wip-us.apache.org/repos/asf/commons-csv/diff/a9daab69
Branch: refs/heads/release
Commit: a9daab6992bc800e510de180aa3e49522a0db462
Parents: 83cd808
Author: Gary Gregory <ga...@gmail.com>
Authored: Tue Apr 3 17:37:03 2018 -0600
Committer: Gary Gregory <ga...@gmail.com>
Committed: Tue Apr 3 17:37:03 2018 -0600
----------------------------------------------------------------------
src/changes/changes.xml | 1 +
.../java/org/apache/commons/csv/CSVFormat.java | 52 ++++++++++++++++++--
src/site/xdoc/index.xml | 3 ++
src/site/xdoc/user-guide.xml | 16 +++---
.../commons/csv/CSVFormatPredefinedTest.java | 5 ++
.../org/apache/commons/csv/CSVPrinterTest.java | 6 +++
6 files changed, 72 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-csv/blob/a9daab69/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 7297a18..14acb0a 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -44,6 +44,7 @@
<action issue="CSV-172" type="fix" dev="ggregory" due-to="Andrew Pennebaker">Don't quote cells just because they have UTF-8 encoded characters.</action>
<action issue="CSV-220" type="add" dev="ggregory" due-to="Gary Gregory">Add API org.apache.commons.csv.CSVFormat.withSystemRecordSeparator().</action>
<action issue="CSV-223" type="fix" dev="ggregory" due-to="Samuel Martin">Inconsistency between Javadoc of CSVFormat DEFAULT EXCEL.</action>
+ <action issue="CSV-209" type="fix" dev="ggregory" due-to="Gary Gregory">Create CSVFormat.ORACLE preset.</action>
</release>
<release version="1.5" date="2017-09-03" description="Feature and bug fix release">
<action issue="CSV-203" type="fix" dev="ggregory" due-to="Richard Wheeldon, Kai Paroth">withNullString value is printed without quotes when QuoteMode.ALL is specified; add QuoteMode.ALL_NON_NULL. PR #17.</action>
http://git-wip-us.apache.org/repos/asf/commons-csv/blob/a9daab69/src/main/java/org/apache/commons/csv/CSVFormat.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/csv/CSVFormat.java b/src/main/java/org/apache/commons/csv/CSVFormat.java
index d7698ab..ae96b1e 100644
--- a/src/main/java/org/apache/commons/csv/CSVFormat.java
+++ b/src/main/java/org/apache/commons/csv/CSVFormat.java
@@ -190,6 +190,11 @@ public final class CSVFormat implements Serializable {
MySQL(CSVFormat.MYSQL),
/**
+ * @see CSVFormat#ORACLE
+ */
+ Oracle(CSVFormat.ORACLE),
+
+ /**
* @see CSVFormat#POSTGRESQL_CSV
* @since 1.5
*/
@@ -227,7 +232,7 @@ public final class CSVFormat implements Serializable {
}
/**
- * Standard comma separated format, as for {@link #RFC4180} but allowing empty lines.
+ * Standard Comma Separated Value format, as for {@link #RFC4180} but allowing empty lines.
*
* <p>
* Settings are:
@@ -378,6 +383,44 @@ public final class CSVFormat implements Serializable {
// @formatter:off
/**
+ * Default Oracle format used by the SQL*Loader utility.
+ *
+ * <p>
+ * This is a comma-delimited format with the system line separator character as the record separator. Values are double quoted when needed and special
+ * characters are escaped with {@code '"'}. The default NULL string is {@code ""}. Values are trimmed.
+ * </p>
+ *
+ * <p>
+ * Settings are:
+ * </p>
+ * <ul>
+ * <li>withDelimiter(',') // default is {@code FIELDS TERMINATED BY ','}</li>
+ * <li>withQuote('"') // default is {@code OPTIONALLY ENCLOSED BY '"'}</li>
+ * <li>withSystemRecordSeparator()</li>
+ * <li>withTrim()</li>
+ * <li>withIgnoreEmptyLines(false)</li>
+ * <li>withEscape('\\')</li>
+ * <li>withNullString("\\N")</li>
+ * <li>withQuoteMode(QuoteMode.MINIMAL)</li>
+ * </ul>
+ *
+ * @see Predefined#Oracle
+ * @see <a href="https://docs.oracle.com/database/121/SUTIL/GUID-D1762699-8154-40F6-90DE-EFB8EB6A9AB0.htm#SUTIL4217">https://docs.oracle.com/database/121/SUTIL/GUID-D1762699-8154-40F6-90DE-EFB8EB6A9AB0.htm#SUTIL4217</a>
+ * @since 1.6
+ */
+ // @formatter:off
+ public static final CSVFormat ORACLE = DEFAULT
+ .withDelimiter(COMMA)
+ .withEscape(BACKSLASH)
+ .withIgnoreEmptyLines(false)
+ .withQuote(DOUBLE_QUOTE_CHAR)
+ .withNullString("\\N")
+ .withTrim()
+ .withSystemRecordSeparator()
+ .withQuoteMode(QuoteMode.MINIMAL);
+ // @formatter:off
+
+ /**
* Default PostgreSQL CSV format used by the {@code COPY} operation.
*
* <p>
@@ -399,7 +442,7 @@ public final class CSVFormat implements Serializable {
* </ul>
*
* @see Predefined#MySQL
- * @see <a href="http://dev.mysql.com/doc/refman/5.1/en/load-data.html"> http://dev.mysql.com/doc/refman/5.1/en/load
+ * @see <a href="https://www.postgresql.org/docs/current/static/sql-copy.html"> https://www.postgresql.org/docs/current/static/sql-copy.html
* -data.html</a>
* @since 1.5
*/
@@ -436,8 +479,7 @@ public final class CSVFormat implements Serializable {
* </ul>
*
* @see Predefined#MySQL
- * @see <a href="http://dev.mysql.com/doc/refman/5.1/en/load-data.html"> http://dev.mysql.com/doc/refman/5.1/en/load
- * -data.html</a>
+ * @see <a href="https://www.postgresql.org/docs/current/static/sql-copy.html"> https://www.postgresql.org/docs/current/static/sql-copy.html</a>
* @since 1.5
*/
// @formatter:off
@@ -1934,7 +1976,7 @@ public final class CSVFormat implements Serializable {
* only works for inputs with '\n', '\r' and "\r\n"
* </p>
*
- * @return A new CSVFormat that is equal to this but with the operating system's line separator stringr
+ * @return A new CSVFormat that is equal to this but with the operating system's line separator string.
* @since 1.6
*/
public CSVFormat withSystemRecordSeparator() {
http://git-wip-us.apache.org/repos/asf/commons-csv/blob/a9daab69/src/site/xdoc/index.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/index.xml b/src/site/xdoc/index.xml
index f9a07ba..40df179 100644
--- a/src/site/xdoc/index.xml
+++ b/src/site/xdoc/index.xml
@@ -30,6 +30,9 @@ limitations under the License.
<li><a href="http://www.ibm.com/support/knowledgecenter/SSBJG3_2.5.0/com.ibm.gen_busug.doc/c_fgl_InOutSql_UNLOAD.htm">Informix UNLOAD</a></li>
<li><a href="http://www.ibm.com/support/knowledgecenter/SSBJG3_2.5.0/com.ibm.gen_busug.doc/c_fgl_InOutSql_UNLOAD.htm">Informix UNLOAD CSV</a></li>
<li><a href="http://dev.mysql.com/doc/refman/5.0/en/mysqldump-delimited-text.html">MySQL</a></li>
+ <li><a href="hhttps://docs.oracle.com/database/121/SUTIL/GUID-D1762699-8154-40F6-90DE-EFB8EB6A9AB0.htm#SUTIL4217">Oracle</a></li>
+ <li><a href="https://www.postgresql.org/docs/current/static/sql-copy.html">PostgreSQL CSV</a></li>
+ <li><a href="https://www.postgresql.org/docs/current/static/sql-copy.html">PostgreSQL Text</a></li>
<li><a href="http://tools.ietf.org/html/rfc4180">RFC 4180</a></li>
<li><a href="http://en.wikipedia.org/wiki/Tab-separated_values">TDF</a></li>
</ul>
http://git-wip-us.apache.org/repos/asf/commons-csv/blob/a9daab69/src/site/xdoc/user-guide.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/user-guide.xml b/src/site/xdoc/user-guide.xml
index 1f89ebe..f3801a6 100644
--- a/src/site/xdoc/user-guide.xml
+++ b/src/site/xdoc/user-guide.xml
@@ -34,12 +34,16 @@ limitations under the License.
The CSVFormat class provides some commonly used CSV variants:
<dl>
- <dt>EXCEL</dt><dd>The Microsoft Excel CSV format.</dd>
- <dt>INFORMIX_UNLOAD</dt><dd>Informix <a href="http://www.ibm.com/support/knowledgecenter/SSBJG3_2.5.0/com.ibm.gen_busug.doc/c_fgl_InOutSql_UNLOAD.htm">UNLOAD</a> format used by the <code>UNLOAD TO file_name</code> operation.</dd>
- <dt>INFORMIX_UNLOAD_CSV</dt><dd>Informix <a href="http://www.ibm.com/support/knowledgecenter/SSBJG3_2.5.0/com.ibm.gen_busug.doc/c_fgl_InOutSql_UNLOAD.htm">CSV UNLOAD</a> format used by the <code>UNLOAD TO file_name</code> operation (escaping is disabled.)</dd>
- <dt>MYSQL</dt><dd>The Oracle MySQL CSV format.</dd>
- <dt>RFC-4180</dt><dd>The RFC-4180 format defined by <a href="https://tools.ietf.org/html/rfc4180">RFC-4180</a></dd>
- <dt>TDF</dt><dd>A tab delimited format</dd>
+ <dr><a href="http://commons.apache.org/proper/commons-csv/apidocs/org/apache/commons/csv/CSVFormat.html#DEFAULT">DEFAULT</a></dr><dd>Standard Comma Separated Value format, as for RFC4180 but allowing empty lines.</dd>
+ <dt><a href="http://commons.apache.org/proper/commons-csv/apidocs/org/apache/commons/csv/CSVFormat.html#EXCEL">EXCEL</a></dt><dd>The Microsoft Excel CSV format.</dd>
+ <dt><a href="http://commons.apache.org/proper/commons-csv/apidocs/org/apache/commons/csv/CSVFormat.html#INFORMIX_UNLOAD">INFORMIX_UNLOAD</a></dt><dd>Informix <a href="http://www.ibm.com/support/knowledgecenter/SSBJG3_2.5.0/com.ibm.gen_busug.doc/c_fgl_InOutSql_UNLOAD.htm">UNLOAD</a> format used by the <code>UNLOAD TO file_name</code> operation.</dd>
+ <dt><a href="http://commons.apache.org/proper/commons-csv/apidocs/org/apache/commons/csv/CSVFormat.html#INFORMIX_UNLOAD_CSV">INFORMIX_UNLOAD_CSV</a></dt><dd>Informix <a href="http://www.ibm.com/support/knowledgecenter/SSBJG3_2.5.0/com.ibm.gen_busug.doc/c_fgl_InOutSql_UNLOAD.htm">CSV UNLOAD</a> format used by the <code>UNLOAD TO file_name</code> operation (escaping is disabled.)</dd>
+ <dt><a href="http://commons.apache.org/proper/commons-csv/apidocs/org/apache/commons/csv/CSVFormat.html#MYSQL">MYSQL</a></dt><dd>The MySQL CSV format.</dd>
+ <dt><a href="http://commons.apache.org/proper/commons-csv/apidocs/org/apache/commons/csv/CSVFormat.html#ORACLE">ORACLE</a></dt><dd>Default Oracle format used by the SQL*Loader utility.</dd>
+ <dt><a href="http://commons.apache.org/proper/commons-csv/apidocs/org/apache/commons/csv/CSVFormat.html#POSTGRESSQL_CSV">POSTGRESSQL_CSV</a></dt><dd>Default PostgreSQL CSV format used by the COPY operation.</dd>
+ <dt><a href="http://commons.apache.org/proper/commons-csv/apidocs/org/apache/commons/csv/CSVFormat.html#POSTGRESSQL_TEXT">POSTGRESSQL_TEXT</a></dt><dd>Default PostgreSQL text format used by the COPY operation.</dd>
+ <dt><a href="http://commons.apache.org/proper/commons-csv/apidocs/org/apache/commons/csv/CSVFormat.html#RFC4180">RFC-4180</a></dt><dd>The RFC-4180 format defined by <a href="https://tools.ietf.org/html/rfc4180">RFC-4180</a>.</dd>
+ <dt><a href="http://commons.apache.org/proper/commons-csv/apidocs/org/apache/commons/csv/CSVFormat.html#TDF">TDF</a></dt><dd>A tab delimited format.</dd>
</dl>
<subsection name="Example: Parsing an Excel CSV File">
http://git-wip-us.apache.org/repos/asf/commons-csv/blob/a9daab69/src/test/java/org/apache/commons/csv/CSVFormatPredefinedTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/csv/CSVFormatPredefinedTest.java b/src/test/java/org/apache/commons/csv/CSVFormatPredefinedTest.java
index e4492ff..a9d1dd0 100644
--- a/src/test/java/org/apache/commons/csv/CSVFormatPredefinedTest.java
+++ b/src/test/java/org/apache/commons/csv/CSVFormatPredefinedTest.java
@@ -46,6 +46,11 @@ public class CSVFormatPredefinedTest {
}
@Test
+ public void testOracle() {
+ test(CSVFormat.ORACLE, "Oracle");
+ }
+
+ @Test
public void testPostgreSqlCsv() {
test(CSVFormat.POSTGRESQL_CSV, "PostgreSQLCsv");
}
http://git-wip-us.apache.org/repos/asf/commons-csv/blob/a9daab69/src/test/java/org/apache/commons/csv/CSVPrinterTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/csv/CSVPrinterTest.java b/src/test/java/org/apache/commons/csv/CSVPrinterTest.java
index 5a09627..57a2568 100644
--- a/src/test/java/org/apache/commons/csv/CSVPrinterTest.java
+++ b/src/test/java/org/apache/commons/csv/CSVPrinterTest.java
@@ -1184,6 +1184,12 @@ public class CSVPrinterTest {
@Test
@Ignore
+ public void testRandomOracle() throws Exception {
+ doRandom(CSVFormat.ORACLE, ITERATIONS_FOR_RANDOM_TEST);
+ }
+
+ @Test
+ @Ignore
public void testRandomPostgreSqlCsv() throws Exception {
doRandom(CSVFormat.POSTGRESQL_CSV, ITERATIONS_FOR_RANDOM_TEST);
}