cancel
Showing results for 
Search instead for 
Did you mean: 

Is it possible to use Neo4j ETL tool against a MS SQL Linked Server?

MarkESmith
Node

Hey all,

I've had no luck using either the command line or GUI ETL tool for pulling and mapping data directly from a Db2 database on an IBM i server.

Despite this, the possibility occurred to me of using the Neo4j ETL tool to query against a Microsoft SQL
linked server. Essentially, setting up a 'linked server' in Microsoft SQL allows you to query a different database (other than SQL Server) and the SQL Server is essentially acting as a pass-through mechanism.

Has anyone tried this before? Would it be possible? I'm wondering if perhaps my luck with the ETL tool will increase if I'm querying the data through a Microsoft SQL server.

4 REPLIES 4

fred
Node Link

Hey Mark, I have done this agains SQL in the ETL tool and APOC procedures. You have a bit more control using the procedures. I have never used it against db2, have you tried the procedures on the DB2 connection?

procedure apoc.load.driver apoc.load.driver(driverClass :: STRING?) :: VOID apoc.load.driver('org.apache.derby.jdbc.EmbeddedDriver') register JDBC driver of source database
procedure apoc.load.jdbc apoc.load.jdbc(jdbc :: STRING?, tableOrSql :: STRING?, params = :: LIST? OF ANY?, config = {} :: MAP?) :: (row :: MAP?) apoc.load.jdbc('key or url','table or statement', params, config) YIELD row - load from relational database, from a full table or a sql statement
procedure apoc.load.jdbcParams apoc.load.jdbcParams(jdbc :: STRING?, sql :: STRING?, params :: LIST? OF ANY?, config = {} :: MAP?) :: (row :: MAP?) deprecated - please use: apoc.load.jdbc('key or url','',[params]) YIELD row - load from relational database, from a sql statement with parameters
procedure apoc.load.jdbcUpdate apoc.load.jdbcUpdate(jdbc :: STRING?, query :: STRING?, params = :: LIST? OF ANY?, config = {} :: MAP?) :: (row :: MAP?) apoc.load.jdbcUpdate('key or url','statement',[params],config) YIELD row - update relational database, from a SQL statement with optional parameters
procedure apoc.model.jdbc apoc.model.jdbc(jdbc :: STRING?, config = {} :: MAP?) :: (nodes :: LIST? OF NODE?, relationships :: LIST? OF RELATIONSHIP?) apoc.model.jdbc('key or url', {schema:'', write: <true/false>, filters: { tables:, views: , columns: }) YIELD nodes, relationships - load schema from relational database

@fred where exactly would you use these procedures? I'm using the Neo4j ETL GUI tool - is there a way to use them within that or are you using it within the ETL CLI tool?

Did you raise an issue about your DB2 server problem?

@michael.hunger Yes, the GH issue can be found at the following link:

Nodes 2022
Nodes
NODES 2022, Neo4j Online Education Summit

On November 16 and 17 for 24 hours across all timezones, you’ll learn about best practices for beginners and experts alike.