Properties having null values is not visible in neo4j nodes

Hello Team,

Greetings !!

I am looking for help on the problem which I am facing.

Problem statement :

While fetching Data from Oracle database using JDBC connection in neo4j , Some columns are having NULL values in . Same columns are not visible in neo4j as property.
Can we do something on this ?? Like if there is a null value coming from Oracle DB , then in neo4j that property should be visible and its value will be "UNAVAILABLE" in neo4j.

EXPECTATION : Properties having null values should be visible in neo4j coming from ORACLE DB.

Please suggest !!!

Thanks in Advance.

Best regards
Akshat

Akshat,

Have you tried using Coalesce? It works like this:

merge (s:SomeLable { property_name: coalesce(row.row_property, "missing")})

The above expression will merge a new node into the graph where property_name is set to the value of the row's row_property if it exist, otherwise, it will set the value to 'missing'.

Regards,

David

Hello David ,

Thanks for giving the guidance.

I have tried your suggestion in my setup and it worked partially.
Partially because where given property value was null , it set to "missing" but where the same property was not null , it did not set other properties to any values in neo4j.

Attaching the screenshots for the reference from Neo4j and ORACLE DB.

I hope you will get my concern.

Below is the query:

with ""jdbc:oracle:thin:opc_op/opc_op@10.135.1.120:1521/omldev"" as url
call apoc.load.jdbc(url,"select MESSAGE_NUMBER , CONDITION_ID , INSTRUCTION_ID , NODE_ID , MSG_KEY from OPC_ACT_MESSAGES") yield row
MERGE (P:SAFO { IID:coalesce(row.INSTRUCTION_ID, "missing") }) ON MATCH SET P.MN = row.MESSAGE_NUMBER , P.CONID = row.CONDITION_ID , P.NODE_ID = row.NID

───────────────────────────────────────────────────────┘


Best Regards
Akshat

Here is another method:

FOREACH(ignoreMe IN CASE WHEN line.xxx IS NOT NULL THEN [1] ELSE END |

MERGE (n:Some {prop = line.xxx})

)

FOREACH(ignoreMe IN CASE WHEN line.xxx IS NULL THEN [1] ELSE END |

MERGE (n:Some {prop = "UNAVAILABLE"})

)

Here is my query but giving error

with "jdbc:oracle:thin:opc_op/opc_op@10.13.1.12:1521/omldev" as url
call apoc.load.jdbc(url,"select MESSAGE_NUMBER , CONDITION_ID , INSTRUCTION_ID , NODE_ID , MSG_KEY from OPC_ACT_MESSAGES") yield row
FOREACH(ignoreMe IN CASE WHEN row.MSG_KEY IS NOT NULL THEN [1] ELSE END |

MERGE (P:KIA { MKEY:row.MSG_KEY})
)ON MATCH SET P.MSN = row.MESSAGE_NUMBER , P.COID = row.CONDITION_ID

FOREACH(ignoreMe IN CASE WHEN row.MSG_KEY IS NULL THEN [1] ELSE END |

MERGE (P:KIA {MKEY: "UNAVAILABLE"})
))ON MATCH SET P.MSN = row.MESSAGE_NUMBER , P.COID = row.CONDITION_ID

Hello Mates,

Can anyone Please help on this ??
I am re-framing my issue " While IMPORTING data from Oracle Database USING JDBC where some columns having null values , those columns are not visible in neo4j for particular node.
I want to make all columns visible in neo4j even its having null value.

Best Regards
Akshat

The variable P will be available within the FOREACH and is not available outside of it. You must include ON MATCH SET within the FOREACH.

Also, there is an extra closing bracket at the end.

Try this:

with "jdbc:oracle:thin:opc_op/opc_op@10.13.1.12:1521/omldev" as url
call apoc.load.jdbc(url,"select MESSAGE_NUMBER , CONDITION_ID , INSTRUCTION_ID , NODE_ID , MSG_KEY from OPC_ACT_MESSAGES") yield row

FOREACH(ignoreMe IN CASE WHEN row.MSG_KEY IS NOT NULL THEN [1] ELSE END |

MERGE (P:KIA { MKEY:row.MSG_KEY})
ON MATCH SET P.MSN = row.MESSAGE_NUMBER , P.COID = row.CONDITION_ID
)

FOREACH(ignoreMe IN CASE WHEN row.MSG_KEY IS NULL THEN [1] ELSE END |

MERGE (P:KIA {MKEY: "UNAVAILABLE"})
ON MATCH SET P.MSN = row.MESSAGE_NUMBER , P.COID = row.CONDITION_ID
)

Please make sure that after ELSE you have two (open and closing) square brackets. Here it may show as a box.

Better to use coalesce() I think, the usage is more concise, no need for the FOREACH workarounds.

Hello Team,

Thanks for helping me out with detailed query. Unfortunately it is not working as per expectation as it is skipping the other properties giving in "ON MATCH SET".

If possible , please let me know the perfect solution for this.

Thanks !!

Best Regards
Akshat

Hello Andrew ,

OK!!

Can you please provide me the query regarding how to use coalesce() function in my case explained above?

Thanks in Advance!

Best Regards
Akshat

Try this:

1: WITH FOREACH.....

FOREACH(ignoreMe IN CASE WHEN row.MSG_KEY IS NOT NULL THEN [1] ELSE END |

MERGE (P:KIA { MKEY:row.MSG_KEY, MSN = row.MESSAGE_NUMBER, COID = row.CONDITION_ID})

)

FOREACH(ignoreMe IN CASE WHEN row.MSG_KEY IS NULL THEN [1] ELSE END |

MERGE (P:KIA {MKEY: "UNAVAILABLE", MSN = row.MESSAGE_NUMBER, COID = row.CONDITION_ID})

)

2: WITH COALESCE.....

MERGE (P:KIA { MKEY: COALESCE(row.MSG_KEY, "UNAVAILABLE"), MSN = row.MESSAGE_NUMBER, COID = row.CONDITION_ID})

Hope these two will work for you.

Hello Team ,

Thanks for helping me out again.

Actually I am a beginner in a Neo4j so finding difficult to understand the new things in neo4j.

Due to this , I asked / will ask for full CQL everytime.

Solution shared is working fine for me , I checked the first option of FOREACH.

Now , I need 1 modification in above query, instead of one specific column is NULL , I want it to check for NULL value for all column coming from JDBC ORACLE DB.

In a nut shell , can we give multiple columns for null check coming from ORACLE JDBC DB?

Thanks Again!!

Best Regards
Akshat

Hi Team ,

Below is my Query created with the help of you guys.

Let me know how can we make this query more fast and simple.

CQL:

with "jdbc:oracle:thin:dq_user/Pvunr8#s@10.136.106.30:1521/bi_report" as url
CALL apoc.load.jdbc(url,"select
CIRCUIT_ID,
to_char(created_date , 'DD-MM-YYYY') AS BI_CREATED_DATE,
to_char(MODIFIED_DATE , 'DD-MM-YYYY') AS BI_MODIFIED_DATE,
CUSTOMER_ID,
CATEGORY,
NEID,
RSRVD_DEVICE_ID,
RSRVD_HOSTNAME,
RSRVD_IP_ADDRESS,
PATH_NAME ,
PATH_CATEGORY,
L2_SWITCH,
L2_SWITCH_HOST_NAME,
L2_SWITCH_IP_ADDRESS,
L2_SWITCH_SAP_ID,
EDS,
EDS_HOST_NAME,
EDS_IPV4_ADDRESS,
EDS_SAP_ID,
ECR,
ECR_HOST_NAME,
ECR_IPV4_ADDRESS,
ECR_SAP_ID,
CSS,
CSS_HOST_NAME,
CSS_IPV4_ADDRESS,
CSS_SAP_ID,
AG1,
AG1_HOST_NAME,
AG1_IPV4_ADDRESS,
AG1_SAP_ID,
AG2,
AG2_HOST_NAME,
AG2_IPV4_ADDRESS,
AG2_SAP_ID,
SAR,
SAR_HOST_NAME,
SAR_IPV4_ADDRESS,
SAR_SAP_ID,
CUSTOMER_NAME,
CUST_LOCATIONID,
HUB_SPOKE,
LAST_MILE_ACCESSED,
CIRCUIT_STATUS,
PRIMARY_PARENT,
SECONDARY_PARENT,
SCNDRY_PARENT_HOST_NAME,
SCNDRY_PARENT_IP_ADDRESS,
R4G_STATE from STG.STG_ENTERPRISE_MDB_NEO4J_DTLS ") YIELD row
MERGE ( MDB:ENTMDB { CIRCUIT_ID: row.CIRCUIT_ID })
FOREACH(ignoreMe IN CASE WHEN row.BI_MODIFIED_DATE IS NOT NULL THEN [1] ELSE END |
MERGE ( MDB:ENTMDB { CIRCUIT_ID: row.CIRCUIT_ID })
ON CREATE
SET
MDB.PATH_CATEGORY=row.PATH_CATEGORY,
MDB.BI_CREATED_DATE=row.BI_CREATED_DATE,
MDB.BI_MODIFIED_DATE=row.BI_MODIFIED_DATE,
MDB.CIRCUIT_ID=row.CIRCUIT_ID,
MDB.RSRVD_HOSTNAME=row.RSRVD_HOSTNAME,
MDB.RSRVD_IP_ADDRESS=row.RSRVD_IP_ADDRESS,
MDB.CATEGORY=row.CATEGORY,
MDB.PATH_NAME=row.PATH_NAME ,
MDB.CUSTOMER_ID=row.CUSTOMER_ID,
MDB.L2_SWITCH=row.L2_SWITCH,
MDB.L2_SWITCH_HOST_NAME=row.L2_SWITCH_HOST_NAME,
MDB.L2_SWITCH_IP_ADDRESS=row.L2_SWITCH_IP_ADDRESS,
MDB.L2_SWITCH_SAP_ID=row.L2_SWITCH_SAP_ID,
MDB.EDS=row.EDS,
MDB.EDS_HOST_NAME=row.EDS_HOST_NAME,
MDB.EDS_IPV4_ADDRESS=row.EDS_IPV4_ADDRESS,
MDB.EDS_SAP_ID=row.EDS_SAP_ID,
MDB.ECR=row.ECR,
MDB.ECR_HOST_NAME=row.ECR_HOST_NAME,
MDB.ECR_IPV4_ADDRESS=row.ECR_IPV4_ADDRESS,
MDB.ECR_SAP_ID=row.ECR_SAP_ID,
MDB.CSS=row.CSS,
MDB.CSS_HOST_NAME=row.CSS_HOST_NAME,
MDB.CSS_IPV4_ADDRESS=row.CSS_IPV4_ADDRESS,
MDB.CSS_SAP_ID=row.CSS_SAP_ID,
MDB.AG1=row.AG1,
MDB.AG1_HOST_NAME=row.AG1_HOST_NAME,
MDB.AG1_IPV4_ADDRESS=row.AG1_IPV4_ADDRESS,
MDB.AG1_SAP_ID=row.AG1_SAP_ID,
MDB.AG2=row.AG2,
MDB.AG2_HOST_NAME=row.AG2_HOST_NAME,
MDB.AG2_IPV4_ADDRESS=row.AG2_IPV4_ADDRESS,
MDB.AG2_SAP_ID=row.AG2_SAP_ID,
MDB.SAR=row.SAR,
MDB.SAR_HOST_NAME=row.SAR_HOST_NAME,
MDB.SAR_IPV4_ADDRESS=row.SAR_IPV4_ADDRESS,
MDB.SAR_SAP_ID=row.SAR_SAP_ID,
MDB.CUSTOMER_NAME=row.CUSTOMER_NAME,
MDB.CUST_LOCATIONID=row.CUST_LOCATIONID,
MDB.HUB_SPOKE=row.HUB_SPOKE,
MDB.LAST_MILE_ACCESSED=row.LAST_MILE_ACCESSED,
MDB.NEID=row.NEID,
MDB.RSRVD_DEVICE_ID=row.RSRVD_DEVICE_ID,
MDB.CIRCUIT_STATUS=row.CIRCUIT_STATUS,
MDB.PRIMARY_PARENT=row.PRIMARY_PARENT,
MDB.SECONDARY_PARENT=row.SECONDARY_PARENT,
MDB.SCNDRY_PARENT_HOST_NAME=row.SCNDRY_PARENT_HOST_NAME,
MDB.SCNDRY_PARENT_IP_ADDRESS=row.SCNDRY_PARENT_IP_ADDRESS,
MDB.R4G_STATE=row.R4G_STATE,
MDB.NEO4J_CREATED_DATE=datetime(),
MDB.NEO4J_MODIFIED_DATE=datetime(),
MDB.NEO4J_EPOC_MODIFIED_DATE=timestamp()
ON MATCH
SET
MDB.PATH_CATEGORY=row.PATH_CATEGORY,
MDB.CIRCUIT_ID=row.CIRCUIT_ID,
MDB.CATEGORY=row.CATEGORY,
MDB.RSRVD_HOSTNAME=row.RSRVD_HOSTNAME,
MDB.RSRVD_IP_ADDRESS=row.RSRVD_IP_ADDRESS,
MDB.PATH_NAME=row.PATH_NAME ,
MDB.CUSTOMER_ID=row.CUSTOMER_ID,
MDB.L2_SWITCH=row.L2_SWITCH,
MDB.L2_SWITCH_HOST_NAME=row.L2_SWITCH_HOST_NAME,
MDB.L2_SWITCH_IP_ADDRESS=row.L2_SWITCH_IP_ADDRESS,
MDB.L2_SWITCH_SAP_ID=row.L2_SWITCH_SAP_ID,
MDB.EDS=row.EDS,
MDB.EDS_HOST_NAME=row.EDS_HOST_NAME,
MDB.EDS_IPV4_ADDRESS=row.EDS_IPV4_ADDRESS,
MDB.EDS_SAP_ID=row.EDS_SAP_ID,
MDB.ECR=row.ECR,
MDB.ECR_HOST_NAME=row.ECR_HOST_NAME,
MDB.ECR_IPV4_ADDRESS=row.ECR_IPV4_ADDRESS,
MDB.ECR_SAP_ID=row.ECR_SAP_ID,
MDB.CSS=row.CSS,
MDB.CSS_HOST_NAME=row.CSS_HOST_NAME,
MDB.CSS_IPV4_ADDRESS=row.CSS_IPV4_ADDRESS,
MDB.CSS_SAP_ID=row.CSS_SAP_ID,
MDB.AG1=row.AG1,
MDB.AG1_HOST_NAME=row.AG1_HOST_NAME,
MDB.AG1_IPV4_ADDRESS=row.AG1_IPV4_ADDRESS,
MDB.AG1_SAP_ID=row.AG1_SAP_ID,
MDB.AG2=row.AG2,
MDB.AG2_HOST_NAME=row.AG2_HOST_NAME,
MDB.AG2_IPV4_ADDRESS=row.AG2_IPV4_ADDRESS,
MDB.AG2_SAP_ID=row.AG2_SAP_ID,
MDB.SAR=row.SAR,
MDB.SAR_HOST_NAME=row.SAR_HOST_NAME,
MDB.SAR_IPV4_ADDRESS=row.SAR_IPV4_ADDRESS,
MDB.SAR_SAP_ID=row.SAR_SAP_ID,
MDB.CUSTOMER_NAME=row.CUSTOMER_NAME,
MDB.CUST_LOCATIONID=row.CUST_LOCATIONID,
MDB.HUB_SPOKE=row.HUB_SPOKE,
MDB.LAST_MILE_ACCESSED=row.LAST_MILE_ACCESSED,
MDB.NEID=row.NEID,
MDB.RSRVD_DEVICE_ID=row.RSRVD_DEVICE_ID,
MDB.CIRCUIT_STATUS=row.CIRCUIT_STATUS,
MDB.PRIMARY_PARENT=row.PRIMARY_PARENT,
MDB.SECONDARY_PARENT=row.SECONDARY_PARENT,
MDB.SCNDRY_PARENT_HOST_NAME=row.SCNDRY_PARENT_HOST_NAME,
MDB.SCNDRY_PARENT_IP_ADDRESS=row.SCNDRY_PARENT_IP_ADDRESS,
MDB.BI_CREATED_DATE=row.BI_CREATED_DATE,
MDB.BI_MODIFIED_DATE=row.BI_MODIFIED_DATE,
MDB.NEO4J_MODIFIED_DATE=datetime(),
MDB.NEO4J_EPOC_MODIFIED_DATE=timestamp())
FOREACH(ignoreMe IN CASE WHEN row.BI_MODIFIED_DATE IS NULL THEN [1] ELSE END |
MERGE ( MDB:ENTMDB { CIRCUIT_ID: row.CIRCUIT_ID })
ON CREATE
SET
MDB.PATH_CATEGORY=row.PATH_CATEGORY,
MDB.BI_CREATED_DATE=row.BI_CREATED_DATE,
MDB.BI_MODIFIED_DATE="UNAVAILABLE",
MDB.CIRCUIT_ID=row.CIRCUIT_ID,
MDB.RSRVD_HOSTNAME=row.RSRVD_HOSTNAME,
MDB.RSRVD_IP_ADDRESS=row.RSRVD_IP_ADDRESS,
MDB.CATEGORY=row.CATEGORY,
MDB.PATH_NAME=row.PATH_NAME ,
MDB.CUSTOMER_ID=row.CUSTOMER_ID,
MDB.L2_SWITCH=row.L2_SWITCH,
MDB.L2_SWITCH_HOST_NAME=row.L2_SWITCH_HOST_NAME,
MDB.L2_SWITCH_IP_ADDRESS=row.L2_SWITCH_IP_ADDRESS,
MDB.L2_SWITCH_SAP_ID=row.L2_SWITCH_SAP_ID,
MDB.EDS=row.EDS,
MDB.EDS_HOST_NAME=row.EDS_HOST_NAME,
MDB.EDS_IPV4_ADDRESS=row.EDS_IPV4_ADDRESS,
MDB.EDS_SAP_ID=row.EDS_SAP_ID,
MDB.ECR=row.ECR,
MDB.ECR_HOST_NAME=row.ECR_HOST_NAME,
MDB.ECR_IPV4_ADDRESS=row.ECR_IPV4_ADDRESS,
MDB.ECR_SAP_ID=row.ECR_SAP_ID,
MDB.CSS=row.CSS,
MDB.CSS_HOST_NAME=row.CSS_HOST_NAME,
MDB.CSS_IPV4_ADDRESS=row.CSS_IPV4_ADDRESS,
MDB.CSS_SAP_ID=row.CSS_SAP_ID,
MDB.AG1=row.AG1,
MDB.AG1_HOST_NAME=row.AG1_HOST_NAME,
MDB.AG1_IPV4_ADDRESS=row.AG1_IPV4_ADDRESS,
MDB.AG1_SAP_ID=row.AG1_SAP_ID,
MDB.AG2=row.AG2,
MDB.AG2_HOST_NAME=row.AG2_HOST_NAME,
MDB.AG2_IPV4_ADDRESS=row.AG2_IPV4_ADDRESS,
MDB.AG2_SAP_ID=row.AG2_SAP_ID,
MDB.SAR=row.SAR,
MDB.SAR_HOST_NAME=row.SAR_HOST_NAME,
MDB.SAR_IPV4_ADDRESS=row.SAR_IPV4_ADDRESS,
MDB.SAR_SAP_ID=row.SAR_SAP_ID,
MDB.CUSTOMER_NAME=row.CUSTOMER_NAME,
MDB.CUST_LOCATIONID=row.CUST_LOCATIONID,
MDB.HUB_SPOKE=row.HUB_SPOKE,
MDB.LAST_MILE_ACCESSED=row.LAST_MILE_ACCESSED,
MDB.NEID=row.NEID,
MDB.RSRVD_DEVICE_ID=row.RSRVD_DEVICE_ID,
MDB.CIRCUIT_STATUS=row.CIRCUIT_STATUS,
MDB.PRIMARY_PARENT=row.PRIMARY_PARENT,
MDB.SECONDARY_PARENT=row.SECONDARY_PARENT,
MDB.SCNDRY_PARENT_HOST_NAME=row.SCNDRY_PARENT_HOST_NAME,
MDB.SCNDRY_PARENT_IP_ADDRESS=row.SCNDRY_PARENT_IP_ADDRESS,
MDB.R4G_STATE=row.R4G_STATE,
MDB.NEO4J_CREATED_DATE=datetime(),
MDB.NEO4J_MODIFIED_DATE=datetime(),
MDB.NEO4J_EPOC_MODIFIED_DATE=timestamp()
ON MATCH
SET
MDB.PATH_CATEGORY=row.PATH_CATEGORY,
MDB.CIRCUIT_ID=row.CIRCUIT_ID,
MDB.BI_CREATED_DATE=row.BI_CREATED_DATE,
MDB.BI_MODIFIED_DATE="UNAVAILABLE",
MDB.CATEGORY=row.CATEGORY,
MDB.RSRVD_HOSTNAME=row.RSRVD_HOSTNAME,
MDB.RSRVD_IP_ADDRESS=row.RSRVD_IP_ADDRESS,
MDB.PATH_NAME=row.PATH_NAME ,
MDB.CUSTOMER_ID=row.CUSTOMER_ID,
MDB.L2_SWITCH=row.L2_SWITCH,
MDB.L2_SWITCH_HOST_NAME=row.L2_SWITCH_HOST_NAME,
MDB.L2_SWITCH_IP_ADDRESS=row.L2_SWITCH_IP_ADDRESS,
MDB.L2_SWITCH_SAP_ID=row.L2_SWITCH_SAP_ID,
MDB.EDS=row.EDS,
MDB.EDS_HOST_NAME=row.EDS_HOST_NAME,
MDB.EDS_IPV4_ADDRESS=row.EDS_IPV4_ADDRESS,
MDB.EDS_SAP_ID=row.EDS_SAP_ID,
MDB.ECR=row.ECR,
MDB.ECR_HOST_NAME=row.ECR_HOST_NAME,
MDB.ECR_IPV4_ADDRESS=row.ECR_IPV4_ADDRESS,
MDB.ECR_SAP_ID=row.ECR_SAP_ID,
MDB.CSS=row.CSS,
MDB.CSS_HOST_NAME=row.CSS_HOST_NAME,
MDB.CSS_IPV4_ADDRESS=row.CSS_IPV4_ADDRESS,
MDB.CSS_SAP_ID=row.CSS_SAP_ID,
MDB.AG1=row.AG1,
MDB.AG1_HOST_NAME=row.AG1_HOST_NAME,
MDB.AG1_IPV4_ADDRESS=row.AG1_IPV4_ADDRESS,
MDB.AG1_SAP_ID=row.AG1_SAP_ID,
MDB.AG2=row.AG2,
MDB.AG2_HOST_NAME=row.AG2_HOST_NAME,
MDB.AG2_IPV4_ADDRESS=row.AG2_IPV4_ADDRESS,
MDB.AG2_SAP_ID=row.AG2_SAP_ID,
MDB.SAR=row.SAR,
MDB.SAR_HOST_NAME=row.SAR_HOST_NAME,
MDB.SAR_IPV4_ADDRESS=row.SAR_IPV4_ADDRESS,
MDB.SAR_SAP_ID=row.SAR_SAP_ID,
MDB.CUSTOMER_NAME=row.CUSTOMER_NAME,
MDB.CUST_LOCATIONID=row.CUST_LOCATIONID,
MDB.HUB_SPOKE=row.HUB_SPOKE,
MDB.LAST_MILE_ACCESSED=row.LAST_MILE_ACCESSED,
MDB.NEID=row.NEID,
MDB.RSRVD_DEVICE_ID=row.RSRVD_DEVICE_ID,
MDB.CIRCUIT_STATUS=row.CIRCUIT_STATUS,
MDB.PRIMARY_PARENT=row.PRIMARY_PARENT,
MDB.SECONDARY_PARENT=row.SECONDARY_PARENT,
MDB.SCNDRY_PARENT_HOST_NAME=row.SCNDRY_PARENT_HOST_NAME,
MDB.SCNDRY_PARENT_IP_ADDRESS=row.SCNDRY_PARENT_IP_ADDRESS,
MDB.NEO4J_MODIFIED_DATE=datetime(),
MDB.NEO4J_EPOC_MODIFIED_DATE=timestamp())
RETURN "loading MDB Data", MDB.CIRCUIT_ID

Couple of suggestions:

  1. Use NVL or COALESCE in your select statement itself and thus you can avoid using FOREACH
    SELECT COALESCE(name, 'N/A') or SELECT NVL(name, 'N/A')

Also, you can create a stored procedure that runs your Select statement and call that stored procedure instead of a long list of columns. This will be less prone to any spelling errors.

CALL apoc.load.jdbc(url, 'exec [dbo].[spname]' )

  1. Looks like you are creating only one node MDB:ENTMDB and adding lot of properties to this node. Generally it's not recommended to use that many properties as you may face severe performance issues,

Think about creating nodes like Device, Host, Customer, Parent, Sub Parent to name a few and connect all to Circuit node.

Hello Mate,

I am very happy and thankful to you as you are helping me out to move in correct direction with your suggestions.

I will look for 1st suggestion by implementing technically in my neo4j system.
For second suggestion , I am 100% agree with you but unfortunately we are using neo4j to dump the Telecom inventory in it. And Telecom inventory has few major data tables like
SITE TABLE , CONTAINER TABLE , SHELF TABLE , CARD TABLE , PORT TABLE and all these tables having near about 20 columns each . Hence , for 5 different tables we have total 100 columns / properties. Good thing is we have some joining conditions in each table with other.
If required , I can share the table details and joining conditions to plan it much better and can have a further discussion on it via call / skype meeting but It is totally subjected to your interest in this.

Your further suggestions will be highly appreciated regarding above explained scenario.

Thanks a lot for showing great interest and helping me in needed times.

Best Regards
Akshat

Sure, I can help you, As you cannot upload data files in this forum, please send your correspondence to ameyasoft@gmail.com.

Hello Mate,

Thanks a lot !!

I have sent the excel sheet containing table details and relationships amongst them to your given mail address.
Please let me know if you required more details.

Best Regards
Akshat