neo4j-contrib / neo4j-etl

Data import from relational databases to Neo4j.
https://neo4j.com/developer/neo4j-etl/
Other
215 stars 46 forks source link

failed due to error (SQLException: No matching schemas found) #53

Open AshaSanaKesavulu opened 5 years ago

AshaSanaKesavulu commented 5 years ago

Neo4j ETL Tool - 1.3.7 Neo4j browser version - 3.2.20 Neo4j version - 3.5.6 i am trying to import MSSQL database data into neo4j using ETL Tool. Here is the following link .

The logs i am getting here is

**COMMAND: java -cp "C:\Users\User.Neo4jDesktop\graphApps_global\neo4j-etl-ui/dist/neo4j-etl.jar;D:\Sana\mssql-jdbc-7.0.0.jre8.jar" org.neo4j.etl.NeoIntegrationCli generate-metadata-mapping --rdbms:url "jdbc:sqlserver://3.218.58.8:1433;databaseName=PlayAblo_B2C" --rdbms:password "Pl@yab!0qADB" --rdbms:user "sa" --schema "PlayAbloForSchool" --output-mapping-file "C:\Users\User.Neo4jDesktop\neo4jDatabases\database-d1b225e9-11a6-4140-b439-c4779872226a\installation-3.5.6/import/mssql_PlayAblo_B2C_PlayAbloForSchool_mapping.json"

please find the screenshot

neo4j
jexp commented 5 years ago

Did you spell the schema correctly? I'm not sure if sqlserver requires uppercase schema names. can you paste the: commant from java .. into the Terminal tab of your desktop and add the --debug flag?

agatlin commented 5 years ago

When defining the schema name, the Neo4j ETL tool expects the database name as part of the fully qualified schema name. The Neo4j ETL tool doesn't quite make this clear.

If your database is PlayAblo_B2C and you are using the default dbo schema, then you would use PlayAblo_B2C.dbo for the schema name. If you are using a schema called PlayAbloForSchool, then the fully qualified schema name would be PlayAblo_B2C.PlayAbloForSchool.

jexp commented 5 years ago

Thanks a lot for the clarification, perhaps this is very MSSQL Server specific, We try to think how to make that more feasible.

As the database name is already given, it should do that behind the scenes in the JDBC driver but seems not to.

jexp commented 5 years ago

@mroiter-larus is there anything we can do too prevent this from happening with the MSQL JDBC driver for schema crawler?

We should also list / compare schemas to see if there are possibly matching ones and perhaps suggest them if we can't find the exact one?

Seems also be a difference with relative schema and absolute schema names.

mroiter-larus commented 5 years ago

@jexp What we can do is to check the --schema attribute value before invoking the mapping generation step, in order to verify if it is specified in the absolute way. If it is not, we can change it behind the scene into the absolute way. In doing so the user could continue to evaluate the "Schema" field in the relative way.

Anyway this would be a temporary solution, because, about listing schemas to see if there are possibly matching ones, i'm already working on the issue 161 opened in NeoTechnology ETL repository, which should exactly provide the user the possibility to select a specific schema name from a list. This should prevent the problem.

romandogadin commented 3 years ago

I know this is an old thread, but figured I would share that I was able resolve the mapping issue by removing the schema completely from the connection. But I have only a single [dbo] schema in the db, not sure what would happen if there are multiple.

Adding the fully qualified schema name, such as [dbname].[dbo], didn't help in my case.