If this information is available elsewhere please point me in that direction. I have come here because I have not been able to find explicit answers for my particular scenario.
None of these resources seem to have the info I'm looking for:
neo4j dot com/developer/neo4j-etl/?_ga=2.243951365.1669141879.1676573412-452651945.1676573412
Using
Neo4j Desktop 1.5.7
Microsoft SQL Server 2019
Neo4j 4.4.0 enterprise
Neo4j ETL Tool 1.6.0
What I'm Trying
I've tried this with a neo4j database both stopped and running, neither will work.
Open Neo4j Desktop
Open Graph Apps > Neo4j ETL Tool
Select project and my Neo4j instance
Select ADD CONNECTION
In the JDBC Connection form, I've filled in this information:
** Connection Name: abc123
** Host: datawarehouse.s.abc.uni
** Port: 1433
** Type: mssql
** Database: def456
** Schema: I don't know what goes here, so have been leaving blank
** JDBC driver path: Here is likely the issue. I have gone here: GitHub - neo4j-contrib/neo4j-etl: Data import from relational databases to Neo4j. to be lead to the MS SQLServer driver here: https://www.microsoft.com/en-us/download/details.aspx?id=11774
I have taken the driver titled sqljdbc42.jar and have put it 2 different directories: C:\Users\user.Neo4jDesktop\projects\project-1234-5678-91011-1213-1415abc AND C:\Users\user.Neo4jDesktop\relate-data\dbmss\dbms-f63db4c6-0d64-4a37\plugins
Then I selected Choose Files and pointed to that path identified above.
** Username: un
** Password: pw
Select TEST AND SAVE CONNECTION, which results with the following errors:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:4098)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3160)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$100(SQLServerConnection.java:43)
at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:3123)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7505)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2445)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1981)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1628)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1459)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:773)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1168)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:681)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229)
at org.neo4j.etl.rdbms.Support.testConnection(Support.java:32)
at org.neo4j.etl.rdbms.Support.main(Support.java:74)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
... 15 more
What do I need to do to make this connection work?
Thanks for the suggestion @glilienfield , but I really must use Neo4j Desktop, and I'm going to hold out hope that someone can fill in my gaps.
The link you provided only seems helpful for those who are using MySQL Server, but I need clear documentation on how to make this work with Neo4j Desktop and MS SQL Server.
I got this to work using Neo4j Desktop with a local MySql database.
I don't have MS SQL Server to test, but I was able to install the driver and load the driver, so I am assuming you will be able to connect and interact with your MS SQL Server.
Use to load the driver:
CALL apoc.load.driver("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Thanks @glilienfield, which driver are you using with Neo4j Desktop, mssql-jdbc-12.2.0.jre8.jar or mssql-jdbc-12.2.0.jre11.jar and in which Neo4j Desktop directory did you put your driver?
As shared above, I put the driver sqljdbc42.jar (I see this will be a different driver) in the directories shared above. I think it's supposed to go in the \plugins directory.
Here's where I'm at, I would still prefer to be using the Neo4j ETL Tool.
Non ETL Tool Route
with both mssql-jdbc-12.2.0.jre8.jar and mssql-jdbc-12.2.0.jre11.jar in the \plugins dir shared above (and I'm under the impression that Neo4j Desktop comes with its own Java? Is this the Zulu Platform x64 Architecture? so I don't know which to use)
Call apoc.load.jdbc("jdbc:sqlserver://datawarehouse.s.abc.uni;integratedSecurity=true;databaseName=def456;","Select [columnName] FROM [def456].[sec].[tableName]")
Yield row
Return row
But this does not work and returns an error of...
Failed to invoke procedure 'apoc.load.jdbc': Caused by: java.lang.UnsatisfiedLinkError: Unable to load authentication DLL mssql-jdbc_auth-12.2.0.x64
Again, I would like to be able to use the Neo4j ETL Tool to work with our MS SQLServer, since this is what it's designed for, but in lieu of that, what do I need to do to make this Non ETL Tool Route work with our MS SQLServer?
Thanks @glilienfield, which driver are you using with Neo4j Desktop, mssql-jdbc-12.2.0.jre8.jar or mssql-jdbc-12.2.0.jre11.jar and in which Neo4j Desktop directory did you put your driver?
As shared above, I put the driver sqljdbc42.jar (I see this will be a different driver) in the directories shared above. I think it's supposed to go in the \plugins directory.
Here's where I'm at, I would still prefer to be using the Neo4j ETL Tool.
Non ETL Tool Route
with both mssql-jdbc-12.2.0.jre8.jar and mssql-jdbc-12.2.0.jre11.jar in the \plugins dir shared above (and I'm under the impression that Neo4j Desktop comes with its own Java? Is this the Zulu Platform x64 Architecture? so I don't know which to use)
Call apoc.load.jdbc("jdbc:sqlserver://datawarehouse.s.abc.uni;integratedSecurity=true;databaseName=def456;","Select [columnName] FROM [def456].[sec].[tableName]")
Yield row
Return row
But this does not work and returns an error of...
Failed to invoke procedure apoc.load.jdbc: Caused by: java.lang.UnsatisfiedLinkError: Unable to load authentication DLL mssql-jdbc_auth-12.2.0.x64
Again, I would like to be able to use the Neo4j ETL Tool to work with our MS SQLServer, since this is what it's designed for, but in lieu of that, what do I need to do to make this Non ETL Tool Route work with our MS SQLServer?
Thanks @glilienfield , I was under the impression that Neo4j Desktop comes with its own Java drivers, things titled Zulu?
The issue seems to have been needing to change my Java Environmental Variable back from
Java\jdk11.0.2
to
Java\jdk1.8.0_121