Skip to content

Commit

Permalink
neo4j export: escape \ (#263)
Browse files Browse the repository at this point in the history
fixes #261
  • Loading branch information
mpollmeier authored Oct 17, 2024
1 parent ab93c28 commit 78b5dc0
Showing 1 changed file with 9 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,16 @@ package flatgraph.formats.neo4jcsv

import com.github.tototoshi.csv.*
import flatgraph.formats.{ExportResult, Exporter, writeFile}
import flatgraph.{Edge, GNode, Graph, Schema}
import flatgraph.{Edge, GNode, Schema}

import java.nio.file.Path
import java.util.regex.Pattern
import scala.collection.mutable
import scala.jdk.CollectionConverters.*
import scala.jdk.OptionConverters.RichOptional
import scala.util.Using

object Neo4jCsvExporter extends Exporter {
val BackslashRegex = Pattern.compile("""\\""") // matches `\`

override def defaultFileExtension = "csv"

Expand Down Expand Up @@ -74,7 +75,7 @@ object Neo4jCsvExporter extends Exporter {
}

val specialColumns = Seq(node.id.toString, node.label)
val propertyValueColumns = columnDefinitions.propertyValues(node.propertyOption)
val propertyValueColumns = columnDefinitions.propertyValues(node.propertyOption).map(escapeSpecialCharacters)
writer.writeRow(specialColumns ++ propertyValueColumns)
nodeCount += 1
}
Expand Down Expand Up @@ -162,6 +163,11 @@ object Neo4jCsvExporter extends Exporter {
}
}

private def escapeSpecialCharacters(propertyValue: String): String = {
// replace `\` with `\\` - otherwise neo4j import complains
BackslashRegex.matcher(propertyValue).replaceAll("""\\\\""")
}

private case class EdgeFilesContext(
label: String,
headerFile: Path,
Expand Down

0 comments on commit 78b5dc0

Please sign in to comment.