Skip to main content

HI FME

I got this error while writing to Neo4J through JDBC,

I thought it was supported ?

https://www.safe.com/solutions/jdbc-support/

Creating writer for format: JDBC (Java Database Connectivity)

Trying to find a JAVA plugin for writer named `JDBC'

FME Configuration: No destination coordinate system set

Using Java Writer Interface Version 2.0 (Oct 31, 2000) with module JDBC to write data to dataset `jdbc:neo4j:http:<solidus><solidus>localhost:7474<solidus>'

Writer `JDBC_1' of type `JDBC' using group definition keyword `JDBC_1_DEF'

JDBC Writer: Creating connection using connection string 'jdbc:neo4j:http://localhost:7474/' and properties '{user=neo4j, password=************}'

JDBC Writer: If the desired JDBC driver was recently installed, restart FME and try again

java.sql.SQLException: No suitable driver found for jdbc:neo4j:http://localhost:7474/

at java.sql.DriverManager.getConnection(DriverManager.java:689)

java.sql.SQLException: No suitable driver found for jdbc:neo4j:http://localhost:7474/

at java.sql.DriverManager.getConnection(DriverManager.java:208)

at COM.safe.fme.JdbcCommon.openConnection(JdbcCommon.java:255)

at COM.safe.fme.JdbcWriter.open(JdbcWriter.java:143)

java.sql.SQLException: No suitable driver found for jdbc:neo4j:http://localhost:7474/

Destination Feature Type Routing Correlator(RoutingFactory): java.sql.SQLException: No suitable driver found for jdbc:neo4j:http://localhost:7474/

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Feature output statistics for `JDBC' writer using keyword `JDBC_1':

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Features Written

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Total Features Written 0

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

java.sql.SQLException: No suitable driver found for jdbc:neo4j:http://localhost:7474/

FME Session Duration: 7.0 seconds. (CPU: 1.7s user, 0.5s system)

END - ProcessID: 7320, peak process memory usage: 927680 kB, current process memory usage: 927680 kB

HI @sebastianolaf

 

Do you know what driver you need to use or have installed? Is it installed in the correct place? This documentation tells you where they should be placed.

 

This blog also has info on using jdbc to connect to neo4j which might be useful

Hi jlutherthomas

FME still cannot Write to Neo4j

I download the driver from here

https://neo4j.com/blog/neo4j-jdbc-driver-3-0-3-and-3-1-0-released/

since the link you give me looks like using newer version of FME, that has more "option" to key in

https://blog.safe.com/2017/12/jdbc-swiss-army-knife-database-formats/

i had to format the jdbc Connection string like below :

jdbc:neo4j:bolt://localhost:7687/?user=neo4j,password=,debug=true,noSsl,flatten=[-1,100,1000]

as mentioned in https://github.com/neo4j-contrib/neo4j-jdbc

3-1-2018-10-51-47-am.jpg

3-1-2018-10-57-38-am.jpg

 

I wonder why, even using the neo4j Driver it still using SQL "CREATE TABLE command"

Writer Log :

Trying to find a JAVA plugin for writer named `JDBC'

FME Configuration: No destination coordinate system set

Using Java Writer Interface Version 2.0 (Oct 31, 2000) with module JDBC to write data to dataset `jdbc:neo4j:bolt:<solidus><solidus>localhost:7687<solidus>?user=neo4j<comma>password=<comma>debug=true<comma>noSsl<comma>flatten=<openbracket>-1<comma>100<comma>1000<closebracket>'

Writer `JDBC_1' of type `JDBC' using group definition keyword `JDBC_1_DEF'

JDBC Writer: Preloading JDBC Driver Class 'org.neo4j.jdbc.bolt.BoltDriver'

JDBC Writer: Creating connection using connection string 'jdbc:neo4j:bolt://localhost:7687/?user=neo4j,password=psswrd,debug=true,noSsl,flatten==-1,100,1000]' and properties '{user=neo4j, password=************}'

JDBC Writer: Connected to 'Neo4j' version '3.3.1' using driver 'Neo4j JDBC Driver' version '3.1.0' built against JDBC version '4.0'

JDBC Writer: Connection class 'org.neo4j.jdbc.bolt.BoltConnection' is being loaded from '/D:/Program Files/FME/plugins/neo4j-jdbc-driver-3.1.0.jar'

JDBC Writer: Committing feature 0

JDBC Writer: Creating table using SQL: CREATE TABLE "VGC_POLE" ("G3E_FNO" integer, "G3E_FID" bigint, "ACCTG_STATUS" varchar(40), "CENTRAL_OFFICE" varchar(50), "CO_DATE" varchar(4), "EXCH_CODE" varchar(40), "FEATURE_STATE" varchar(10), "INSTALL_DATE" double precision, "INST_CENT" smallint, "JOB_ID" varchar(30), "JOB_STATE" varchar(50), "MIN_MATERIAL" varchar(15), "OWNERSHIP" varchar(255), "PPWO" varchar(50), "EXCHANGE" varchar(25), "WORK_ORDER" varchar(30), "YEAR_PLACED" varchar(4), "FEATURE_TYPE" varchar(50), "GRID_NO" double precision, "LOCATION" varchar(50), "HEIGHT" numeric(38,10), "MATERIAL" varchar(20), "DP_NO" varchar(13), "POLE_NO" varchar(4), "NODE1_ID" varchar(40), "NODE2_ID" varchar(40))

JDBC Writer: Failed to create table 'VGC_POLE'. Error: org.neo4j.driver.v1.exceptions.ClientException: Invalid input '"': expected whitespace, comment, '=', node labels, MapLiteral, a parameter, a relationship pattern, ',', LOAD CSV, FROM, INTO, START, MATCH, UNWIND, MERGE, CREATE GRAPH >>, CREATE >> GRAPH, CREATE GRAPH, CREATE, SET, DELETE GRAPHS, DELETE, REMOVE, FOREACH, WITH, CALL, PERSIST, RELOCATE, RETURN, SNAPSHOT, UNION, ';' or end of input (line 1, column 14 (offset: 13))

"CREATE TABLE "VGC_POLE" ("G3E_FNO" integer, "G3E_FID" bigint, "ACCTG_STATUS" varchar(40), "CENTRAL_OFFICE" varchar(50), "CO_DATE" varchar(4), "EXCH_CODE" varchar(40), "FEATURE_STATE" varchar(10), "INSTALL_DATE" double precision, "INST_CENT" smallint, "JOB_ID" varchar(30), "JOB_STATE" varchar(50), "MIN_MATERIAL" varchar(15), "OWNERSHIP" varchar(255), "PPWO" varchar(50), "EXCHANGE" varchar(25), "WORK_ORDER" varchar(30), "YEAR_PLACED" varchar(4), "FEATURE_TYPE" varchar(50), "GRID_NO" double precision, "LOCATION" varchar(50), "HEIGHT" numeric(38,10), "MATERIAL" varchar(20), "DP_NO" varchar(13), "POLE_NO" varchar(4), "NODE1_ID" varchar(40), "NODE2_ID" varchar(40))"

^

JDBC Writer: Table 'VGC_POLE' does not exist

COM.safe.fme.TableDoesntExistException

at COM.safe.fme.JdbcWriter.checkTable(JdbcWriter.java:1767)

COM.safe.fme.TableDoesntExistException

at COM.safe.fme.JdbcWriter.prepareForWriting(JdbcWriter.java:490)

at COM.safe.fme.JdbcWriter.write(JdbcWriter.java:280)

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Feature output statistics for `JDBC' writer using keyword `JDBC_1':

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Features Written

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

VGC_POLE 1

==============================================================================

Total Features Written 1

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

COM.safe.fme.TableDoesntExistException

COM.safe.fme.TableDoesntExistException

FME Session Duration: 7.9 seconds. (CPU: 4.7s user, 0.5s system)

END - ProcessID: 3244, peak process memory usage: 972188 kB, current process memory usage: 935644 kB

COM.safe.fme.TableDoesntExistException

Program Terminating

Translation FAILED.


Hi jlutherthomas

FME still cannot Write to Neo4j

I download the driver from here

https://neo4j.com/blog/neo4j-jdbc-driver-3-0-3-and-3-1-0-released/

since the link you give me looks like using newer version of FME, that has more "option" to key in

https://blog.safe.com/2017/12/jdbc-swiss-army-knife-database-formats/

i had to format the jdbc Connection string like below :

jdbc:neo4j:bolt://localhost:7687/?user=neo4j,password=,debug=true,noSsl,flatten=[-1,100,1000]

as mentioned in https://github.com/neo4j-contrib/neo4j-jdbc

3-1-2018-10-51-47-am.jpg

3-1-2018-10-57-38-am.jpg

 

I wonder why, even using the neo4j Driver it still using SQL "CREATE TABLE command"

Writer Log :

Trying to find a JAVA plugin for writer named `JDBC'

FME Configuration: No destination coordinate system set

Using Java Writer Interface Version 2.0 (Oct 31, 2000) with module JDBC to write data to dataset `jdbc:neo4j:bolt:<solidus><solidus>localhost:7687<solidus>?user=neo4j<comma>password=<comma>debug=true<comma>noSsl<comma>flatten=<openbracket>-1<comma>100<comma>1000<closebracket>'

Writer `JDBC_1' of type `JDBC' using group definition keyword `JDBC_1_DEF'

JDBC Writer: Preloading JDBC Driver Class 'org.neo4j.jdbc.bolt.BoltDriver'

JDBC Writer: Creating connection using connection string 'jdbc:neo4j:bolt://localhost:7687/?user=neo4j,password=psswrd,debug=true,noSsl,flatten==-1,100,1000]' and properties '{user=neo4j, password=************}'

JDBC Writer: Connected to 'Neo4j' version '3.3.1' using driver 'Neo4j JDBC Driver' version '3.1.0' built against JDBC version '4.0'

JDBC Writer: Connection class 'org.neo4j.jdbc.bolt.BoltConnection' is being loaded from '/D:/Program Files/FME/plugins/neo4j-jdbc-driver-3.1.0.jar'

JDBC Writer: Committing feature 0

JDBC Writer: Creating table using SQL: CREATE TABLE "VGC_POLE" ("G3E_FNO" integer, "G3E_FID" bigint, "ACCTG_STATUS" varchar(40), "CENTRAL_OFFICE" varchar(50), "CO_DATE" varchar(4), "EXCH_CODE" varchar(40), "FEATURE_STATE" varchar(10), "INSTALL_DATE" double precision, "INST_CENT" smallint, "JOB_ID" varchar(30), "JOB_STATE" varchar(50), "MIN_MATERIAL" varchar(15), "OWNERSHIP" varchar(255), "PPWO" varchar(50), "EXCHANGE" varchar(25), "WORK_ORDER" varchar(30), "YEAR_PLACED" varchar(4), "FEATURE_TYPE" varchar(50), "GRID_NO" double precision, "LOCATION" varchar(50), "HEIGHT" numeric(38,10), "MATERIAL" varchar(20), "DP_NO" varchar(13), "POLE_NO" varchar(4), "NODE1_ID" varchar(40), "NODE2_ID" varchar(40))

JDBC Writer: Failed to create table 'VGC_POLE'. Error: org.neo4j.driver.v1.exceptions.ClientException: Invalid input '"': expected whitespace, comment, '=', node labels, MapLiteral, a parameter, a relationship pattern, ',', LOAD CSV, FROM, INTO, START, MATCH, UNWIND, MERGE, CREATE GRAPH >>, CREATE >> GRAPH, CREATE GRAPH, CREATE, SET, DELETE GRAPHS, DELETE, REMOVE, FOREACH, WITH, CALL, PERSIST, RELOCATE, RETURN, SNAPSHOT, UNION, ';' or end of input (line 1, column 14 (offset: 13))

"CREATE TABLE "VGC_POLE" ("G3E_FNO" integer, "G3E_FID" bigint, "ACCTG_STATUS" varchar(40), "CENTRAL_OFFICE" varchar(50), "CO_DATE" varchar(4), "EXCH_CODE" varchar(40), "FEATURE_STATE" varchar(10), "INSTALL_DATE" double precision, "INST_CENT" smallint, "JOB_ID" varchar(30), "JOB_STATE" varchar(50), "MIN_MATERIAL" varchar(15), "OWNERSHIP" varchar(255), "PPWO" varchar(50), "EXCHANGE" varchar(25), "WORK_ORDER" varchar(30), "YEAR_PLACED" varchar(4), "FEATURE_TYPE" varchar(50), "GRID_NO" double precision, "LOCATION" varchar(50), "HEIGHT" numeric(38,10), "MATERIAL" varchar(20), "DP_NO" varchar(13), "POLE_NO" varchar(4), "NODE1_ID" varchar(40), "NODE2_ID" varchar(40))"

^

JDBC Writer: Table 'VGC_POLE' does not exist

COM.safe.fme.TableDoesntExistException

at COM.safe.fme.JdbcWriter.checkTable(JdbcWriter.java:1767)

COM.safe.fme.TableDoesntExistException

at COM.safe.fme.JdbcWriter.prepareForWriting(JdbcWriter.java:490)

at COM.safe.fme.JdbcWriter.write(JdbcWriter.java:280)

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Feature output statistics for `JDBC' writer using keyword `JDBC_1':

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Features Written

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

VGC_POLE 1

==============================================================================

Total Features Written 1

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

COM.safe.fme.TableDoesntExistException

COM.safe.fme.TableDoesntExistException

FME Session Duration: 7.9 seconds. (CPU: 4.7s user, 0.5s system)

END - ProcessID: 3244, peak process memory usage: 972188 kB, current process memory usage: 935644 kB

COM.safe.fme.TableDoesntExistException

Program Terminating

Translation FAILED.

I am not too familiar with JDBC so can't say for sure.

 

Have you tried this in the latest version of FME to see if it's the same?

I don't think we have evaluated the bolt jdbc driver or the Neo4j v3 driver. You should be able to use Cypher in the SQLExecutor and SQLCreator transformers , but FME reader and writers are not supported. See the JDBC support page and the table Currently Tested Formats.

 

Neo4J has a straightforward CSV importer which is good for bulk loads, so you could possibly use FME to export your Oracle in an appropriate CSV structure.

The Neo4j REST API might be an alternative.


I don't think we have evaluated the bolt jdbc driver or the Neo4j v3 driver. You should be able to use Cypher in the SQLExecutor and SQLCreator transformers , but FME reader and writers are not supported. See the JDBC support page and the table Currently Tested Formats.

 

Neo4J has a straightforward CSV importer which is good for bulk loads, so you could possibly use FME to export your Oracle in an appropriate CSV structure.

The Neo4j REST API might be an alternative.

Hi Mark

 

Thank you for the input, we already do it using CSV,

 

I thought it was easier just connect through FME , because the column is a lot,

 

and we don't want to write the Cyper Query through SQLCreator

 

because it just 1-to-1 mapping
I am not too familiar with JDBC so can't say for sure.

 

Have you tried this in the latest version of FME to see if it's the same?
We still using FME 2017

 

but Mark said is not supported so we will stick with CSV for now

 

 

 

 

 


Hi - I am also interested in testing some spatial models in Neo4J by exporting data from our Oracle Locator GIS database. I was wanting to use FME to write the data from Oracle to Neo4j. This thread indicates Neo4j is not supported - is this correct?

Regards,

 

David

Hi - I am also interested in testing some spatial models in Neo4J by exporting data from our Oracle Locator GIS database. I was wanting to use FME to write the data from Oracle to Neo4j. This thread indicates Neo4j is not supported - is this correct?

Regards,

 

David
@davidpnorris7 FME can work with Neo4j, but only through the SQLExecutor or SQLCreator where you can formulate you're own Cypher statements. In your case you could use the Oracle reader to read your Oracle and pass that to the SQLExecutor with the appropriate Cypher statements to load your Neo4j. If it's a bulk load then it might be easier to use FME to export your Oracle into a CSV or Shape file and then use the Neo4j CSV or Shape importers.

 

Another alternative is to explore the Neo4j REST API and use the FME HTTPCaller

 


I don't think we have evaluated the bolt jdbc driver or the Neo4j v3 driver. You should be able to use Cypher in the SQLExecutor and SQLCreator transformers , but FME reader and writers are not supported. See the JDBC support page and the table Currently Tested Formats.

 

Neo4J has a straightforward CSV importer which is good for bulk loads, so you could possibly use FME to export your Oracle in an appropriate CSV structure.

The Neo4j REST API might be an alternative.

I evaluated the new bolt driver while writing the blog article, and confirmed that it does not support SQL (which the old driver sort of / almost did). Cypher statements are required to interact with neo4j in FME.

 


I evaluated the new bolt driver while writing the blog article, and confirmed that it does not support SQL (which the old driver sort of / almost did). Cypher statements are required to interact with neo4j in FME.

 

Thank you RavenKopelman

 

we will stick with CSV for now

 

 

 


Reply