Error Neo.ClientError.Procedure.ProcedureCallFailed: Failed to invoke procedureapoc.load.json: Caused by: java.lang.RuntimeException: Can't read URL or key {$url} as json: {$url}
Statement
CALL apoc.periodic.iterate("
MATCH (n)
RETURN n as node
", "
CALL apoc.load.json($url + node.someId + '/' + node.someValue) YIELD value as v
// Problem is that some of the URLs will return 404
RETURN v
",
"
params: {
url: "someUrl"
}
")
Description
I am reading some nodes that contain information about data stored in a rest API using apoc.periodic.iterate
Then for every node, I will make a call to the API using apoc.load.json
The error occurs when the API is returning a 404 for some of the URLs causing the entire statement to fail
It appears that my data source has missing data and I would like to skip the 404s and continue with the iterate.
What is the best way to handle an error when calling apoc.load.json on a 404 during an apoc.periodic.iterate so that I can skip the bad URLs?
There is an option for apoc.load.jsonParams to ignore missing files.
apoc.load.jsonParams('url',{header:value},payloadOrNull, {failOnError:false}) YIELD value - load from JSON URL (e.g. web-api) while sending headers / payload to import JSON as stream of values if the JSON was an array or a single value if it was a map
I am trying to execute following cypher
call apoc.load.jdbc('jdbc:sqlserver://xxxxx','exec tempProcedure[department]') YIELD row with row.displayName as data call apoc.load.json(data) yield value return value
getting below error
Neo.ClientError.Procedure.ProcedureCallFailed: Failed to invoke procedure apoc.load.json: Caused by: java.net.URISyntaxException: Illegal character in scheme name at index 0: [{"target_table":"xxx","source_table":"yyy","source_column_name":"abc","weight":1,"Neo_Relationship_Name":"FUNCTIONAL_UNIT_AT"}]
data needs to be an URL, are you sure it is? Or did you just miss to add the URL prefix to apoc.load.json?
something like:
call apoc.load.jdbc('jdbc:sqlserver://xxxxx','exec tempProcedure[department]')
YIELD row with row.displayName as data
call apoc.load.json("http://host/path?q="+data)
yield value return value