반응형
/*
-- Title : [N4j4.4] LOAD 구문을 통한 CSV 기반 노드 구축
-- Tag : neo4j csv files import load csv 네오포제이
*/
■ LOAD CSV 활용 범위
- URI에서 CSV 데이터 로드/수집 지원
- 입력 데이터를 복잡한 그래프/도메인 구조에 직접 매핑
- 데이터 변환 처리
- 복잡한 계산 지원
- 도면요소, 관계 및 구조를 작성하거나 병합합니다.
■ CSV 파일 위치
- Neo4j Import 디렉토리에서만 읽기 가능(OS별 File Locations 참조)
- CentOS : /var/lib/neo4j/import
■ CSV 데이터 조회
// CSV ROW 행수 조회
load csv from "file:///tttBook.csv" as row
return count(*)
│"count(*)"│
│11 │
// CSV 데이터 조회
load csv from "file:///tttBook.csv" as row
return row limit 3
│"row" │
│["bk_id","bk_nm","page_cnt","pub_dt","fk_isbn_id","fk_pub_id"]│
│["kr11","구성 가능 매체 구조","138","2020-02-07","B01B","4"] │
│["kr12","에어로졸 제공 시스템","196","2017-09-01","E01E","2"] │
// 첫행(헤더 및 필드별 조회)
load csv with headers from "file:///tttPublisher.csv" as row
return row.pub_id, row.pub_nm, row.pub_tp limit 3
│"row.pub_id"│"row.pub_nm"│"row.pub_tp"│
│"1" │"삼성전자" │"코스피" │
│"2" │"LG전자" │"코스피" │
│"3" │"포스코" │"외감" │ │
■ CSV 통한 노드 생성
// 노드 생성
load csv with headers from "file:///tttBook.csv" as row
create (b:tttBook)
set b = row
Added 10 labels, created 10 nodes, set 60 properties, completed after 51 ms.
// 노드 조회
match(b:tttBook) return b
// 속성 타입 확인
match(b:tttBook) return b limit 1
{ "identity": 0,
"labels": [
"tttBook"
],
"properties": {
"bk_nm": "구성 가능 매체 구조",
"page_cnt": "138", // 숫자필드인데 문자로 처리
"bk_id": "kr11",
"fk_pub_id": "4", // 숫자필드인데 문자로 처리
"fk_isbn_id": "B01B",
"pub_dt": "2020-02-07"
}}
// 초기화
match(b:tttBook) delete b;
// 숫자필드로 변경
load csv with headers from "file:///tttBook.csv" as row
create (b:tttBook)
set b = row
, b.page_cnt = toInteger(row.page_cnt)
, b.fk_pub_id = toInteger(row.fk_pub_id)
■ 샘플 파일 및 업로드 스크립트
※ Resources
•https://db-hyunjin.tistory.com/49
•brain-nim.tistory.com/33
•https://neo4j.com/developer/guide-import-csv/
반응형