killbill-uncached

util: Change CSV separator to be the '|' instead of ','. See #689 The

1/20/2017 9:24:42 PM

Details

bin/import-account 29(+16 -13)

diff --git a/bin/import-account b/bin/import-account
index 8d8b17e..f9a6978 100755
--- a/bin/import-account
+++ b/bin/import-account
@@ -47,18 +47,18 @@ function fill_empty_columns() {
 
     local filename=$1
     local tmp=${filename}.tmp
-    grep ',,' $filename > /dev/null
+    grep '||' $filename > /dev/null
     while [[ $? = 0 ]]; do
-        cat $filename | sed s/,,/,\\\\N,/ > $tmp
+        cat $filename | sed s/\|\|/\|\\\\N\|/ > $tmp
         mv $tmp $filename
-        grep ',,' $filename > /dev/null
+        grep '||' $filename > /dev/null
     done
 
-    grep ',$' $filename > /dev/null
+    grep '|$' $filename > /dev/null
     while [[ $? = 0 ]]; do
-        cat $filename | sed s/,$/,\\\\N/ > $tmp
+        cat $filename | sed s/\|$/\|\\\\N/ > $tmp
         mv $tmp $filename
-        grep ',$' $filename > /dev/null
+        grep '|$' $filename > /dev/null
     done
 
 }
@@ -68,16 +68,16 @@ function replace_boolean() {
     local filename=$1
     local tmp=${filename}.tmp
 
-    cat $filename | sed s/,true/,1/g > $tmp
+    cat $filename | sed s/\|true/\|1/g > $tmp
     mv $tmp $filename
 
-    cat $filename | sed s/true,/1,/g > $tmp
+    cat $filename | sed s/true\|/1\|/g > $tmp
     mv $tmp $filename
 
-    cat $filename | sed s/,false/,0/g > $tmp
+    cat $filename | sed s/\|false/\|0/g > $tmp
     mv $tmp $filename
 
-    cat $filename | sed s/false,/0,/g > $tmp
+    cat $filename | sed s/false\|/0\|/g > $tmp
     mv $tmp $filename
 }
 
@@ -86,7 +86,7 @@ function fix_dates() {
     local filename=$1
     local tmp=${filename}.tmp
 
-    cat $filename | sed s/+0000\",/\",/g > $tmp
+    cat $filename | sed s/+0000\"\|/\"\|/g > $tmp
     mv $tmp $filename
 }
 
@@ -98,8 +98,11 @@ function export_data() {
 
 function import_data() {
     local filename=$1
-    local columns_names=$2
-    mysql --local-infile --execute="LOAD DATA LOCAL INFILE '$TMP_DIR/$filename' INTO TABLE $filename FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' IGNORE 1 LINES ($columns_names); SHOW WARNINGS" -u$USERNAME -p$PASSWORD $DATABASE
+    # Separator for column names needs to be ',' and not the '|'
+    local columns_names=`echo "$2" | sed s/\|/,/g`
+
+    echo "****  $filename: $columns_names"
+    mysql --local-infile --execute="LOAD DATA LOCAL INFILE '$TMP_DIR/$filename' INTO TABLE $filename FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '\"' IGNORE 1 LINES ($columns_names); SHOW WARNINGS" -u$USERNAME -p$PASSWORD $DATABASE
 }
 
 function sanitize_and_import() {
diff --git a/util/src/main/java/org/killbill/billing/util/export/dao/CSVExportOutputStream.java b/util/src/main/java/org/killbill/billing/util/export/dao/CSVExportOutputStream.java
index 154415e..1bde787 100644
--- a/util/src/main/java/org/killbill/billing/util/export/dao/CSVExportOutputStream.java
+++ b/util/src/main/java/org/killbill/billing/util/export/dao/CSVExportOutputStream.java
@@ -66,6 +66,8 @@ public class CSVExportOutputStream extends OutputStream implements DatabaseExpor
         // Remove quoting of character which applies (somewhat arbitrarily, Tatu???) for string whose length is greater than MAX_QUOTE_CHECK = 24 -- See CVSWriter#_mayNeedQuotes
         builder.disableQuoteChar();
 
+        builder.setColumnSeparator('|');
+
         for (final ColumnInfo columnInfo : columnsForTable) {
             builder.addColumn(columnInfo.getColumnName(), getColumnTypeFromSqlType(columnInfo.getDataType()));
         }