๐Ÿ“ Back-end & ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป/Database

[Graph DB] Neo4j์— CSV ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

SOIT 2024. 4. 24. 18:05

์ด์ „ ๋ฐœํ–‰๊ธ€๊ณผ ์—ฐ๋™๋œ๋‹ค

2024.04.24 - [Back-end] - [Graph DB] Neo4j ๋‹ค์šด ๋ฐฉ๋ฒ• ๋ฐ ์„ค๋ช…

 

 

1. Neo4j ์‹œ์ž‘

 

1) ๋จผ์ € ์ƒˆ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

 

2) DBMS ์ƒ์„ฑ

 

 

3) start, ๊ทธ๋ฆฌ๊ณ  open

 

4) ๊ทธ๋Ÿฌ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ˜์†” ์ฐฝ์ด ๋œธ

 

 

2. ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์„ ํƒํ•˜๊ธฐ ๋ฐ ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ

 

1) CSV ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

  1. github์— ์˜ฌ๋ฆฐ ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
  2. ์ปดํ“จํ„ฐ ๋‚ด ํŒŒ์ผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

์ด 2๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์ค‘, 2. ์„ ํƒํ•จ (1.์€ 1๋ฒˆ์งธ Reference ์ฐธ๊ณ )

๋จผ์ €, import ๋ˆ„๋ฅด๋ฉด > ํด๋”์ฐฝ์ด ๋œธ > ์›ํ•˜๋Š” CSV ๋„ฃ๊ธฐ

 

 

2) LOAD CSV

์•„๊นŒ Open ํ•œ ์ฐฝ์œผ๋กœ ๋‹ค์‹œ ใ„ฑใ„ฑ

 

์—ฌ๊ธฐ์„œ ์ž‘์—…์„ ํ•˜๊ธฐ์ „์— ๋ฐ˜๋“œ์‹œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ œ๋Œ€๋กœ ์„ ํƒํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์ง„ํ–‰ํ•œ๋‹ค.

์ด๋•Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ด๋™ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ 2๊ฐ€์ง€์ด๋‹ค.

 

  1. neo4j๋Š” ๋งˆ์šฐ์Šค
  2. system์€ ์ปค๋งจ๋“œ

 

๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ์›ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰(ํ•„์ž๋Š” system์ธ๋ฐ, ์‚ฌ์‹ค ์ด๊ฒŒ ๋”ฑํžˆ ์ƒ๊ด€์—†์Œ)

- :use system

 

์ปค๋งจ๋“œ์— ์ž…๋ ฅํ•จ

 

๋งˆ์šฐ์Šค๋กœ ํด๋ฆญํ•จ

 

 

์—ฌ๊ธฐ์„œ ์ž ๊น~~~~~~! 

Neo4J์—์„œ๋Š” SQL์ด ์•„๋‹Œ Cypher๋ผ๋Š” ์„ ์–ธํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ํ†ตํ•ด DBMS์— ์งˆ์˜๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค
๊ถ๊ธˆํ•˜๋ฉด ์—ฌ๊ธฐ ๋งํฌ๋กœ~~>>

 

 

3) ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ƒ์„ฑ/์‚ญ์ œ ๋ฐ ์ด๋™

 

์ƒ์„ฑ

- CREATE DATABASE ์ด๋ฆ„

 

์ด๋ฆ„๋ช…์€ ascii characters(a,b, ...), numbers(0,1, ...), dots and dashes ๋งŒ ๊ฐ€๋Šฅํ•จ

 

์ด๋ฆ„์€ ์†Œ๋ฌธ์ž๋กœ ์ƒ์„ฑ๋˜๋”๋ผ--> ๋Œ€์†Œ๋ฌธ์ž ๊ด€๊ณ„ ์—†์Œ?(๋‹ค์‹œ test ๋ผ๊ณ  ๋งŒ๋“ค์—ˆ๋”๋‹ˆ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ž‘ ์ด๋ฆ„๋ช…์ด ๊ฒน์นœ๋‹ค๋„ค)

๊ทธ๋ฆฌ๊ณ  ์˜†์— x ๋ฒ„ํŠผ ๋ˆ„๋ฅธ๋‹ค๊ณ  DATABASE๊ฐ€ ์‚ฌ๋ผ์ง€๋Š”๊ฒŒ ์•„๋‹˜

 

์—ฌ๊ธฐ๋ถ€ํ„ฐ ์ž ๊น ์ฐธ๊ณ  !! CSV ๋ถˆ๋Ÿฌ์˜ค๊ธฐ๋กœ ๊ฐ€๊ณ  ์‹ถ์œผ๋ฉด 4)๋กœ ๊ฐ€๊ธฐ~!

 

๊ถ๊ธˆํ•ด์„œ ํ•ด๋ด„, ์‚ญ์ œํ•˜๋Š” ๋ช…๋ น์–ด 

 

์‚ญ์ œ

DROP DATABASE ์ด๋ฆ„

์‚ญ์ œ๋จ

 

์ƒ์„ฑ๋จ

 

์•„ ๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์ปค๋งจ๋“œ์— ๋งŒ๋“  ํŒŒ๋ž€์ƒ‰ > ์ด๊ฑฐ ๋ˆ„๋ฅด๊ธฐ (๊ทธ๋ฆฌ๊ณ  ์ˆ˜์ •๋„ ๊ฐ€๋Šฅํ•จ)

 

 

 

4) CSV ๊ฐ€์ ธ์˜ค๊ธฐ

์จ‹๋“  ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ๋งŒ๋“ค์—ˆ์œผ๋ฉด

๊ผญ ํ•ด๋‹น ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉ์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค

 

์—ฌ๊ธฐ์„œ CSV ๊ฐ€์ ธ์˜ค๋Š” ๋ช…๋ น์–ด ์ž…๋ ฅ ํ•  ๊ฑฐ์ž„

์ฒซ์งธ๋กœ, Node ๋“ค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ๊ทธ ํ›„ Relation์ •๋ณด๋ฅผ ๊ฐ€์ ธ ์˜ค๋„๋ก ํ•  ๊ฑฐ์ž„

 

5) Node.CSV ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

 

๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์„œ SET ๋ถ€๋ถ„์€ ๋ฐ์ดํ„ฐ์˜ ์†์„ฑ์„ ๋ฐ”๊ฟ”์ฃผ๋Š” ๊ฑฐ์ž„. ์ง€์ • ์•ˆํ•˜๋ฉด, ๋ฌธ์žํ˜•์œผ๋กœ ๋˜์–ด ์žˆ์Œ > ์ด๊ฑธ ์ˆ˜์น˜ํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•  ๊ฑฐ์ž„

 

- LOAD CSV WITH HEADERS FROM 'file:///ํŒŒ์ผ๋ช….csv' AS row

  MERGE (place:Place {id:row.company})

  SET place.latitude = toFloat(row.latitude), place.longitude = toFloat(row.longitude), place.code = toInteger(row.code);

 

 

6) ๊ด€๊ณ„์ •๋ณด.CSV ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

- LOAD CSV WITH HEADERS FROM 'file:///ํŒŒ์ผ๋ช….csv' AS row

  MATCH (origin:Place {id:row.loading})

  MATCH (destination:Place {id:row.unloading})

  MERGE (origin)-[r:TRANSPORT]->(destination)

  SET r.type = row.transport, r.frequency = toInteger(row.frequency);

 

 

๊ทผ๋ฐ ์–‘์„ ๋” ๋„“ํžˆ๋‹ˆ๊นŒ ๊ฑ ๊บผ์ง; ์ด๊ฒŒ ๊ด€๊ณ„๊ฐ€ ๋„ˆ๋ฌด ๋งŽ๊ณ  ๋ณต์žกํ•ด์„œ ๊ทธ๋Ÿผ

 

๊ทธ๋ž˜ํ”„๋กœ ๋ฐ์ดํ„ฐ ๋ณด๊ณ  ์‹ถ์œผ๋ฉด

 

- MATCH (n) RETURN n

 

์—ฌ๊ธฐ์„œ ์ž ๊น

๋…ธ๋“œ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š”๋ฐ, ์ž๊พธ ์ดˆ๊ธฐ ์„ค์ •์ด 300์ด๋ผ๊ณ ํ•ด์„œ ๋…ธ๋“œ๋ฅผ ๋‹ค ์•ˆ ๋ณด์—ฌ์คŒ


์ด๋Ÿด ๊ฒฝ์šฐ, ์ดˆ๊ธฐ ์„ค์ • ๋ฐ”๊พธ๋ฉด ๋จ


์ด๋ ‡๊ฒŒ>>
๊ทผ๋ฐ.. ์†๋„๊ฐ€ ๋ฏธ์ณค์Œ.. ์—„์ฒญ ๋А๋ฆผ

 

 

 

 

 

 

Reference

https://dfso2222.tistory.com/23

 

[๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค][๋ฌด์ž‘์ •ํ•ด๋ณด๊ธฐ] [3/30] ์›น์ƒ์˜ CSV๋กœ ๋ถ€ํ„ฐ Graph ์ƒ์„ฑํ•˜๊ธฐ

์˜ˆ์‹œ๋ฐ์ดํ„ฐ: ์šด์†ก ๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์Œ ์œ„์น˜์—์„œ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://resources.oreilly.com/examples/0636920233145/tree/master/data data · master · examples / Graph Algorithms O'Reilly Resources resources.oreilly.com git

dfso2222.tistory.com

https://brain-nim.tistory.com/33

 

Neo4j csvํŒŒ์ผ ์—ด๊ธฐ(LOAD CSV)

๋งŽ์€ ์ˆ˜์˜ ์›๋ณธ๋ฐ์ดํ„ฐ, raw๋ฐ์ดํ„ฐ๋Š” csv, ์—‘์…€๊ณผ ๊ฐ™์€ ํ…Œ์ด๋ธ” ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ทธ๋ž˜ํ”„DB๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ทนํžˆ ๋“œ๋ฌธ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ํ…Œ์ด๋ธ” ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ž˜ํ”„DB๋กœ ์˜ฎ๊ฒจ์™€์•ผ ํ•œ๋‹ค

brain-nim.tistory.com

https://dbrang.tistory.com/1645

 

[N4j4.4] ์›๊ฒฉ Neo4j ์—ฐ๊ฒฐํ•˜๊ธฐ

/* -- Title : [N4j4.4] ์›๊ฒฉ Neo4j ์—ฐ๊ฒฐํ•˜๊ธฐ -- Tag : neo4j ๋„ค์˜คํฌ์ œ์ด */ โ–  VirtualBox ์„ค์ • ๊ธฐ์กด ์„ค์ •(dbrang.tistory.com/993)ํ•œ '๊ณ ์ • IP' ์„ค์ •์€ ์›๊ฒฉ PC์—์„œ ์•ˆ๋จ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ • ใ… ๋‹ค์Œ์— ์—ฐ๊ฒฐ๋จ : NAT ์„ค์ • ใ…

dbrang.tistory.com

 

728x90