티스토리 뷰

Neo4j

IMPORT CSV

joyHong 2020. 6. 17. 00:29

이번 포스팅에서는 CSV 형태로 저장된 데이터를 Neo4j에 넣어보도록 한다.

CSV를 import 하기 위해서는 조금 준비를 해야 하는데

가장 중요한 것은 import 할 csv 파일을 neo4j에서 설정한 기본폴더(기본으로 설정된 폴더)에 넣어서 진행할 것인지, 아니면 설정을 바꾸어 내가 원하는 폴더를 지정할 것인지의 차이이다.

import할 대상 파일을 위치시킬 기본 폴더는 import  디렉토리이다.

 

설정 파일은 neo4j가 설치된 곳을 기준으로 conf/neo4j.conf 파일이 설정파일이다.

이 파일의 값을 변경하여 기본 폴더를 변경하여 사용할 것인지, 그대로 두고 csv 대상 파일을 import 폴더에 넣을 것인지 정하면 된다.

 

먼저 리눅스 버전은 neo4j.conf 파일을 열어보면

neo4j.conf 파일 일부 내용

dbms.directories.import=import 

라고 된 부분을 볼 수 있다.

이 부분이 import할 파일을 위치시킬 기본 디렉토리가 된다.

 

실제로 neo4j가 설치된 곳에서 목록을 확인해 보면 import 폴더가 보이는 것을 확인할 수 있다.

 

 

Neo4j-Desktop에서는 프로그램이 실행된 상태에서 Projects 밑에 사용하고 있는 프로젝트로 들어가면 데이터베이스를 볼 수 있는데 여기서 아래 그림과 같이 Manage 버튼을 선택하여 다음으로 넘어간다.

Manage 버튼을 누르면 나오는 화면에서 Settings 탭을 선택하면 설정 정보를 확인할 수 있다.

여기서도 마찬가지로 

dbms.directories.import=import

라고 된 부분을 볼 수 있다.

 

이 값을 그대로 사용하고자 하면

아래의 그림과 같이 Open Folder를 선택하고 Import 버튼을 선택하면 해당 폴더가 윈도우즈 탐색기로 실행이 된다.

여기서 import 버튼을 선택하면

바로 해당 위치로 찾아갈 수 있다.

 

설치한 위치를 알고 있다면 굳이 이 과정을 거치지 않고 바로 import 폴더로 이동한 후 csv 파일을 그곳에 복사해 놓으면 된다.

하지만 기억이 나지 않을 경우에는 위와 같이 찾아갈 수도 있음을 알아두면 좋겠다.

 

그럼 이제 이러한 import 폴더를 찾았으면(여기서는 디폴트값이 import 폴더에 csv파일을 복사해서 사용할 예정)

샘플 csv를 하나 만들어 import 파일에 복사해 놓으면 된다.

no,title,year,creator
1,파이썬 길잡이,2018,나이선
2,자바의 정석,2018,장자바
3,코틀린,2019,고득린
4,플러터,2020,편러터

 이 예시에서는 위의 내용을 sample.csv로 저장하였고, 인코딩은 UTF-8로 하였다.

sample.csv
0.00MB

sample.csv 파일을 import 폴더에 복사해 놓은 후

Cypher로 csv 파일을 읽어 들이면 된다.

 

1. Line 단위로 읽기

LOAD CSV FROM 'file:///sample.csv' AS line
RETURN  line

* 결과는 list 형태이다.

 

2. linenumber ( )

LOAD CSV FROM 'file:///sample.csv' AS line
RETURN linenumber() AS number, line

라인넘버를 추가

 

3. 헤더가 있는 경우

LOAD CSV WITH HEADERS FROM 'file:///sample.csv' AS line 
RETURN linenumber() AS number, line

* 결과가 dictionary 형태이다.

헤더의 값들이 딕셔너리형태로 헤더:실제값 으로 만들어진다.

 

 

4. Value 반환 1

LOAD CSV WITH HEADERS FROM 'file:///sample.csv' AS line 
RETURN line.title


5. CSV를 읽어 노드와 관계 생성

LOAD CSV WITH HEADERS FROM 'file:///sample.csv' AS line 
CREATE (:Book {title:line.title})-[:CREATOR{year:line.year}]->(:Person{name:line.creator})

 

위의 쿼리 처럼 CSV를 읽어 바로 노드와 관계를 생성할 수도 있다.

MATCH (n:Book)-[r]-(m:Person)
RETURN n, r, m

 

이렇게 질의하여 샘플 csv를 import하여 생성한 결과를 아래처럼 확인해 볼 수 있다.

csv import 결과

 


참조 :

https://neo4j.com/docs/cypher-manual/4.0/



'Neo4j' 카테고리의 다른 글

그래프 구성 설정  (0) 2020.06.17
Neosemantics  (0) 2020.06.17
Cypher - INDEX & CONSTRAINT  (0) 2020.06.16
Cypher - MATCH (2)  (0) 2020.06.15
Cypher - MERGE  (1) 2020.06.15
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함