Head's Up! These forums are read-only. All users and content have migrated. Please join us at community.neo4j.com.
07-21-2020 02:25 AM
Hi,
Using the standard java driver (org.neo4j.driver.v1.Session) i have had the LOAD CSV functionality working perfectly correctly for some time.
e.g. StatementResult x = mySession.run("cypher query encapsulating LOAD CSV statement");
However i now need to convert this to operate under an OGM Session.
e.g. Result x = myOgmSession.query("cypher query encapsulating LOAD CSV statement", parameterMap);
Currently it is throwing a "Couldn't load external resource at..." exception. I have double checked and the neo4j.conf file is correctly setup concerning importing.
I have also subsequently read in a previous topic on this stream (Spring Data Neo4j & Neo4j-OGM) that it is not possible to use LOAD CSV with OGM/SDN.
so my question is - is it possible to invoke a LOAD CSV based cypher query using an OGM Session ?
If it is - what am i doing wrong? Do i need to set something additional when creating the OGM configuration.
best regards
R
07-21-2020 05:44 AM
It should basically work the same way with OGM as it works with the driver.
Could you maybe give more input about the exception you are facing or if you do a local file import?
Please have a look at an example I build to verify you did about the same. https://github.com/meistermeier/neo4j-issues-examples/tree/master/load-csv
07-21-2020 06:47 AM
Hi,
some immediate responses
Re the Exception - just caught it as Exception so do not know the exact sub type - however the exact informational message (extracted from the thrown exception) started with "Couldn't load the external resource at .." - which i recognised as Neo4J specific - in the early days of developing this app i got the same exception and solved it by adjusting the import entries in Ne04j.conf.
I am importing from local files. The same location and files load perfectly when using the driver.
Looked at your example .
Firstly the LoadCsvWithOGM is effectively empty - so i cannot make any comments.
Secondly the LoadCsvWithDriver. i think I am doing roughly the same as you. But for avoidance of doubt i have created my equivalent (see below). i have highlighted the important differences in red
import org.neo4j.driver.v1.AuthTokens;
import org.neo4j.driver.v1.Driver;
import org.neo4j.driver.v1.StatementResult;
import org.neo4j.driver.v1.GraphDatabase;
import org.neo4j.driver.v1.Session;
........
// load csv with driver
Driver graphDatabaseDriver = GraphDatabase.driver("bolt://localhost:7687", AuthTokens.basic("neo4j","password"));
Session graphDatabaseSession = graphDatabaseDriver.session();
try (
//No explicit transaction
cypherQuery = "LOAD CSV WITH HEADERS FROM '" + "file:///" + areaForWorking.replace("\\", "\\\\") + baseFilename + ".csv' AS row " +
"MATCH (n:Element { ElementGuid: row.ElementGuid}) USING INDEX n:Element(ElementGuid) " +
"SET " + propertiesToPopulate +
" SET n" + graphLabel();
StatementResult result = graphDatabaseSession.run(cypherQuery);
}
07-21-2020 07:32 AM
I went back to the project and made it a local file import with some instructions in the readme.
Basically both files look and behave the same.
Please make sure that the database is configured correctly.
All the sessions of the conference are now available online