About Me

My photo
I worked as freelancer on freelance.com for many years, Then opened my Company. I did software coding with my company. But also did pottery -- I know well business management. Software coding is coming next to it as a plus. It helps but organising is as much important as coding. I have many years of experience in business management of Industrial Construction works. I am quite known as company for CAD drafting and 3d for architectural design. I had quite a lot experience at USA and at Turkey. I am less known, in my pottery love.

Thursday, February 22, 2024

Neo4j - importing Nodes and Relationships

Beginner

https://neo4j.com/docs/getting-started/

https://neo4j.com/use-cases/

First : create constraints = key

  • key:
//constraint book nodes isbn property
CREATE CONSTRAINT tur_id_cnst
FOR (emlk:Tur) REQUIRE emlk.tur_id IS UNIQUE

  • drop key:
//constraint drop 
DROP CONSTRAINT tur_id_cnst

Note

  • files should be placed inside your project folder:

file:/C:/Users/HP/Documents/neo4j-app-data/relate-data/dbmss/YOUR_PROJECT_FOLDER/import/xxx.csv

  • use csv for importing : there are two columns `name` and `sene`

  • Create nodes- my code:

//import nodes
LOAD CSV  with headers FROM 'file:///artist_sene.csv' AS row
CREATE (a:SANATCI {name: row.name, sene: row.sene})
RETURN a.name, a.sene
  • create relationship with csv file - 

This doesn`t work , it is obselete. It works only, as they say, the internet online version of Neo4j. It doesn`t work for Neo4j Desktop.

LOAD CSV WITH HEADERS FROM "file:///roles.csv" AS csvLine 
CALL {WITH csvLine MATCH (person:Person {id: toInteger(csvLine.personId)}), (movie:Movie {id: toInteger(csvLine.movieId)}) 
CREATE (person)-[:ACTED_IN {role: csvLine.role}]->(movie)} 
IN TRANSACTIONS OF 2 ROWS'

  • my relationship import code: 


  • First: In the cypher code be careful to the two pairs to be exactly the same! The head naming must be different.
  • Second thing: careful to not have empty space in your cypher code for the field to import
  • Third thing: careful to not have empty space in the header / field names
//import csv relationship
LOAD CSV WITH HEADERS FROM "file:///ogr_ulke.csv" AS csvLine 
MATCH (ogrtm:OGRETMEN {ogr_id: toInteger(csvLine.ogr_id)}),(sehirs:SEHIR {shr_id: toInteger(csvLine.shr_id)}) 
MERGE (ogrtm)-[live:LIVES_IN]->(sehirs);

(I noticed the mistake in the Neo4j tutorials and wrote a note about it to them: 


Error handling

import edemiyorsa:
  • csv file dogru klasor / folder içinde mi
  • csv dosya adı doğru olarak cypher koda yazılmış mı
  • csv  dosyasındaki header'larda boşluk var mı - olmamalı
  • bazen import ederken "toInteger" gerekli bazen de silmek gerekiyor

//Other :


developer

 https://neo4j.com/developer/javascript

https://neo4j.com/docs/python-manual/current/

Bulk import Nodes to Neo4j:

your csv files have headers (column names) in the data

LOAD CSV  WITH HEADERS FROM 'file:///n4j_cift_02_node_yrd_dal_is_kolu.csv'
AS row
MERGE (:2_yrd_dal {id:  row[1], is_ad: row[2], Sehir: row[3], type: row[4]});

or more shortly:

LOAD CSV WITH HEADERS FROM 'FILE:///n4j_cift_02_node_yrd_dal_is_kolu.csv'
AS row
CREATE (yrd:yrd_dal)
SET yrd = row;

note 1: second one is preferable; you don`t have to write the column names one by one
note 2: don`t hustle importing id, neo4j gives anyway automatically an id to all. I don`t have the code to stop it

Bulk import Relationships to Neo4j:

searching for it

source:

https://neo4j.com/docs/cypher-manual/current/clauses/load-csv/?source=post_page-----f3553f1a76cf-------------------------------- 


LOAD CSV WITH HEADERS FROM 'FILE:///n4j_cift_05_rel_menfaat_iliskisi.csv' AS row
MATCH (p:uyg_tip {id: row.sourceId})
MATCH (m:uyg_kol {id: row.targetId})
MERGE (p)-[r:MENFAAT {role: row.menfaat}]->(m);


No comments:

Post a Comment

neo4j-mathematics

 create the nodes: CREATE   ( n : sil  { name : "k1" ,  val :   1250 }),( m : sil2  { name : "k2" ,  val : 1250 }),   ( ...