neo4j-etl
neo4j-etl copied to clipboard
Data import from relational databases to Neo4j.
= 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
- You can raise link:issues[GitHub issues] or send feedback to [email protected]
- Please also join our https://community.neo4j.com/c/neo4j-graph-platform/etl[Community Site] ask in the appropriate category
== Download & Run Command Line Tool
Download & unzip the latest https://github.com/neo4j-contrib/neo4j-etl/releases/latest[neo4j-etl.zip^].
== 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
--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
--using { bulk:neo4j-import | cypher:neo4j-shell | cypher:shell | cypher:direct | cypher:batch | cypher:fromSQL }
--neo4j:url
--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) \
--tx-batch-size
For detailed usage see also the: http://neo4j-contrib.github.io/neo4j-etl#neo4j-etl-cli[tool documentation].
== Neo4j-Desktop
Use the Application URL https://r.neo4j.com/neo4j-etl-app
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 https://neo4j.com/developer/neo4j-etl[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:
|MS SQLServer
|jdbc:sqlserver://;servername=
|IBM DB2
|jdbc:db2://
|Derby |jdbc:derby:derbyDB |Included since JDK6
|Cassandra
|jdbc:cassandra://
|SAP Hana
|jdbc:sap://
|MySQL
|jdbc:mysql://
|PostgreSQL
|jdbc:postgresql://
|===