Awesome Open Source
Awesome Open Source

= Neo4j ETL :img: docs/img

Neo4j ETL allows importing data from relational databases into Neo4j.

== Features

  • Neo4j-ETL UI in Neo4j Desktop
  • Manage multiple RDBMS connections
  • automatically extract database metadata from relational database
  • derive graph model
  • visually edit labels, relationship-types, property-names and types
  • visualize current model as a graph
  • persist mapping as json
  • retrieve relevant CSV data from relational databases
  • run import via neo4j-import, bolt-connector, cypher-shell, neo4j-shell
  • bundles MySQL, PostgreSQL, allows custom JDBC driver with Neo4j Enterprise

== License

This tool is licensed under the link:LICENSE.txt[NEO4J PRE-RELEASE LICENSE AGREEMENT].

== Issues & Feedback & Contributions

== Download & Run Command Line Tool

Download & unzip the latest[^].

== Examples of command usage:

.Minimal command line

./bin/neo4j-etl export
--rdbms:url --rdbms:user --rdbms:password
--destination $NEO4J_HOME/data/databases/graph.db/ --import-tool $NEO4J_HOME/bin
--csv-directory $NEO4J_HOME/import

.Full set of command line options

./bin/neo4j-etl export
--rdbms:url --rdbms:user --rdbms:password --rdbms:schema
--using { bulk:neo4j-import | cypher:neo4j-shell | cypher:shell | cypher:direct | cypher:batch | cypher:fromSQL }
--neo4j:url --neo4j:user --neo4j:password
--destination $NEO4J_HOME/data/databases/graph.db/ --import-tool $NEO4J_HOME/bin
--csv-directory $NEO4J_HOME/import --options-file import-tool-options.json --force --debug

.Additional command line options for cypher:batch and cypher:fromSQL import modes:

--unwind-batch-size (Batch size that will be used for unwind data)
--tx-batch-size (Transaction Batch size that will be used for unwind commit) \

For detailed usage see also the:[tool documentation].

== Neo4j-Desktop

Use the Application URL in the "Graph Apps" tab of Neo4j Desktop.

image:{img}/neo4j-etl-install.jpg[width=400] image:{img}/graph-app-icon.jpg[width=400]

Then the next time you start Neo4j Desktop you'll see Neo4j ETL as a UI to be used interactively.

[cols="4*^.^",opts=header] |=== | Configure Driver | Load Mapping | Edit Mapping | Import Data | image:{img}/driver.jpg[width=200] | image:{img}/load-mapping.jpg[width=200] | image:{img}/edit-mapping.jpg[width=200] | image:{img}/import-data.jpg[width=200] |===

//// .Location of $DESKTOP |=== | macOS | ~/Library/Application Support/Neo4j Desktop | | Windows | %APPDATA%/Neo4j Desktop | | Linux | ~/.config/Neo4j Desktop | |=== ////

We put[detailed usage instructions for the Neo4j ETL Tool] in the Neo4j Developer Pages.

//// If you want to test changes to the Neo4j Desktop UI, you can try:

  • Make necessary changes
  • npm install && yarn start to verify UI runs
  • Install the production ETL tool in Neo4j Desktop
  • Replace the relevant JavaScript in $DESKTOP
  • Re-run the Neo4j Desktop App and veify UI and functionality are as expected ////

== JDBC Drivers

The drivers for MySQL and PostgreSQL are bundled with the Neo4j-ETL tool.

To use other JDBC drivers use these download links and JDBC URLs. Provide the JDBC driver jar-file to the command line tool or Neo4j-ETL application. And use the JDBC-URL with the --rdbms:url parameter or in the JDBC-URL input field.

[options="header",cols="a,3m,a"] |=== |Database | JDBC-URL | Driver Source

|Oracle |jdbc:oracle:thin:/@:/<service_name> |[Oracle JDBC Driver^]

|MS SQLServer |jdbc:sqlserver://;servername=;databaseName=;user=;password= |[SQLServer Driver^]

|IBM DB2 |jdbc:db2://:<port/5021>/:user=;password=; |[DB2 Driver^]

|Derby |jdbc:derby:derbyDB |Included since JDK6

|Cassandra |jdbc:cassandra://:<port/9042>/ |link:[Cassandra JDBC Wrapper^]

|SAP Hana |jdbc:sap://:<port/39015>/?user=&password= |[SAP Hana ngdbc Driver^]

|MySQL |jdbc:mysql://:<port/3306>/?user=&password= |[MySQL Driver^]

|PostgreSQL |jdbc:postgresql:///?user=&password= |[PostgreSQL JDBC Driver^]


Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
html (11,153
mysql (1,045
postgresql (743
sql (717
csv (273
neo4j (103
graph-database (75
cypher (32
rdbms (23
importer (20
relational-databases (18