Skip to content

Commit 7bb655b

Browse files
committed
Null column and special characters present in col val handled
1 parent cd2b4b9 commit 7bb655b

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

src/main/scala/com/springml/spark/salesforce/DataWriter.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ class DataWriter (val userName: String, val password: String,
6262
}
6363

6464
def writeData(rdd: RDD[Row], metadataId: String): Boolean = {
65-
val csvRDD = rdd.map(row => row.toSeq.map(value => value.toString).mkString(","))
65+
val csvRDD = rdd.map(row => row.toSeq.map(value => Utils.rowValue(value)).mkString(","))
6666
csvRDD.mapPartitionsWithIndex {
6767
case (index, iterator) => {
6868
@transient val logger = Logger.getLogger(classOf[DataWriter])

src/main/scala/com/springml/spark/salesforce/Utils.scala

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,15 +91,29 @@ object Utils extends Serializable {
9191
def rowSize(rows: Array[Row]) : Long = {
9292
var sizeOfRows = 0l
9393
for (row <- rows) {
94-
//for (i <- 0 until rows.length) {
95-
val rowSize = SizeEstimator.estimate(row.toSeq.map { value => value.toString() }.mkString(","))
9694
// Converting to bytes
95+
val rowSize = SizeEstimator.estimate(row.toSeq.map { value => rowValue(value) }.mkString(","))
9796
sizeOfRows += rowSize
9897
}
9998

10099
sizeOfRows
101100
}
102101

102+
def rowValue(rowVal: Any) : String = {
103+
if (rowVal == null) {
104+
""
105+
} else {
106+
var value = rowVal.toString()
107+
if (value.contains("\"")) {
108+
value = value.replaceAll("\"", "\"\"")
109+
}
110+
if (value.contains("\"") || value.contains("\n") || value.contains(",")) {
111+
value = "\"" + value + "\""
112+
}
113+
value
114+
}
115+
}
116+
103117
def metadataConfig(usersMetadataConfig: Option[String]) = {
104118
var systemMetadataConfig = readMetadataConfig();
105119
if (usersMetadataConfig != null && usersMetadataConfig.isDefined) {

0 commit comments

Comments
 (0)