Neo4j ETL Tool 1.3.1 Release: White Winter

Michael Hunger
Neo4j Developer Blog
4 min readJan 21, 2019

--

There is good news for all you folks importing data from relational databases into Neo4j. We’ve just released a new version of the Neo4j ETL Tool UI and command-line tool.

The new version 1.3.1 should auto-update in Neo4j Desktop and also show a change log.

From this version on, you no longer need an activation key to use the Neo4j ETL Tool in Neo4j Desktop, just install it by specifying:
https://r.neo4j.com/neo4j-etl-app
in the Neo4j Desktop Graph Application install box.

The Neo4j ETL Tool UI was originally built very quickly for the launch as a Neo4j Desktop Graph App at GraphConnect 2017 based on parts of the 2017 Neo4j Browser code base.

Based on our user feedback, the existing UI was sometimes confusing or not intuitive to use.

In order to address this issue, we have implemented a complete revamp of the UI. It should now be very straightforward to use and much cleaner and more responsive. If you have any further suggestions for UI improvements, please let us know, they are now much easier to implement.

Our good friends at The SilverLogic helped us to upgrade the code to React and design a new style and flow.

Here’s a quick overview of the changes.

After you install an open the ETL app and select your desired Neo4j Desktop project, you will see a list of your existing graphs and their status, along with any relational databases you may have added in the past.

The first screen now displays relational and graph databases side by side so you see both the source and destination for your imports at the same time. You can now also edit the relational database connection in this screen. After selecting both, you can start the extracting the domain-mapping. Log files are readily available for your viewing.

First step: Select source and target and then start mapping

Example: Select, add and edit source and target database
Example: Edit relational database connection details

Second step: Visualize and edit metadata

After selecting your source and destination databases, you will transition to exploring and configuring your metadata. This second step has been updated to display a color-coded, editable selection of node labels and relationship types side by side. You can now also search for entities which is helpful for larger schemas. It is visualized as a graph on the right which reflects your changes immediately and whose elements you can double-click to bring up the property editor.

The editing pop-up for properties is clearer and much more useable.

After editing and saving the schema metadata here, you can advance to the last step, the import, or go back to the beginning and change your source or target.

Example: Show graph view of meta model
Example: Edit node and relationship attributes

Third step: Import the data

In the third step, you start the data import either offline or online, depending on the state of your graph database. The tool will export the necessary CSV from the relational database and import it into the selected Neo4j database.

Example: Import the data

Bug fixes

A number of issues were fixed.

  • Support for new auth approach in MySQL 8.0.4+, upgraded packaged MySQL driver
  • Fix for Azure SQL database
  • Fix for CSV quoting
  • Composite key handling for MSSQL

Something we learned is that extracting metadata from Postgres is quite slow, which is an issue of the Postgres JDBC driver. This issue becomes exacerbated with remote database, so please be aware.

Try it now

With the activation key-free installation everyone should be able to use this tool. Please let us know how well it works for you. The command-line version is available from the GitHub releases page.

If you run into any issues or have suggestions for improvements please raise a GitHub issue. If you have questions you can ask on the Neo4j Community Site.

Happy importing!

--

--

Michael Hunger
Neo4j Developer Blog

A software developer passionate about teaching and learning. Currently working with Neo4j, GraphQL, Kotlin, ML/AI, Micronaut, Spring, Kafka, and more.