-
Neo4j csv파일 열기(LOAD CSV)Data & ML & AI/GraphDB(Neo4j) 2022. 7. 11. 00:43반응형
많은 수의 원본데이터, raw데이터는 csv, 엑셀과 같은 테이블 형식의 데이터입니다.
처음부터 그래프DB로 시작하는 극히 드문 경우가 아니라면 테이블 형식의 데이터를 그래프DB로 옮겨와야 한다는 뜻입니다.
Neo4j에서 csv파일을 열고 데이터를 가져와 봅시다.
출처: http://data.neo4j.com/northwind/products.csv
그 전에 주의사항
데이터를 import 함에 있어 제약조건이 좀 있습니다.
1) CSV파일만 load 가능하다.
xlsx등의 기타 포맷은 지원하지 않습니다. (neo4j 밖에서 특정한 처리를 통해 csv로 변경해줘야 합니다.)
csv파일 외에 API, RDBMS에서 가져오는 방법도 있지만 일단 여기서는 생략합니다.
로컬에 저장된 데이터 읽어오기
Neo4j Desktop에서 로컬 컴퓨터에서 원하는 디렉토리 파일을 cypher 구문으로 직접 읽어올 수는 없는 것으로 보입니다.
때문에 Neo4j Desktop 프로그램 GUI상에서 먼저 세팅을 해주어야 합니다.
1. csv파일을 import folder에 넣기
1) 작업하고자 하는 DBMS 인스턴스에서 [Open folder]-[Import]를 누르면
여기다가 파일들 붙여 넣으라고 창이 뜹니다....
(보통은 파일 선택하기 창이 뜨지 않나...?)
2) csv파일 복사+붙여넣기
2. LOAD CSV
LOAD CSV WITH HEADERS FROM 'file:///products.csv' AS row RETURN row;
LOAD CSV 구문을 활용해서 파일을 읽어올 수 있습니다.
csv파일에 헤더(header)가 있다면 중간에 WITH HEADERS를 붙이면 됩니다.
하지만 아직 데이터를 저장했다는 뜻은 아닙니다.
3. CSV 파일 내의 데이터를 LOAD한 뒤 CREATE, SET하기
데이터를 노드로 저장하기 위해서는 CREATE, SET 구문을 추가적으로 사용해줘야 합니다.
1) CREATE, SET
LOAD CSV WITH HEADERS FROM 'file:///products.csv' AS row CREATE (n:Product) SET n = row
하지만 아직 문제가 남아있습니다.
모든 데이터들이, 수치형 데이터들 마저도 모두 string 형태로 저장되어 있다는 것입니다.
2) toFloat, toInteger
SET이후에 아래와 같은 형태로 변경을 원하는 데이터를 지정해주면 됩니다.
노드.속성명 = toFloat(row.칼럼명)
LOAD CSV WITH HEADERS FROM 'file:///products.csv' AS row CREATE (n:Product) SET n = row, n.unitPrice = toFloat(row.unitPrice), n.unitsInStock = toInteger(row.unitsInStock), n.unitsOnOrder = toInteger(row.unitsOnOrder), n.reorderLevel = toInteger(row.reorderLevel), n.discontinued = (row.discontinued <> "0")
온라인에서 데이터 읽어오기
다음의 경우, 온라인에서도 데이터를 가져올 수 있습니다.
- 웹사이트에서 csv파일에 대한 접근이 가능하도록 링크를 공유하는 경우(위의 products.csv처럼)
- 구글 스프레드시트의 데이터를 가져오기
//Example 1 - website LOAD CSV FROM 'https://data.neo4j.com/northwind/customers.csv' //Example 2 - Google LOAD CSV WITH HEADERS FROM 'https://docs.google.com/spreadsheets/d/<yourFilePath>/export?format=csv'
반응형'Data & ML & AI > GraphDB(Neo4j)' 카테고리의 다른 글
[Neo4j + Python] Python에서 Neo4j 쿼리 결과 읽기 (0) 2022.08.29 [Neo4j + Python] Python에서 Neo4j DB 접속하고 쿼리하기 (0) 2022.08.28 Neo4j 제약조건 생성하기(CONSTRAINT: unique, Not Null) (0) 2022.07.07 Neo4j Cypher 기본구문(Create, Match, Merge 절) (0) 2022.06.09 Neo4j의 기본 구성요소(Elements of Neo4j; study with Movies Project Tutorial) (0) 2022.06.09