2014-07-22 6 views
0

Mysql에서 neo4j로 데이터를 마이그레이션하려고했습니다. Neo4j 2.1.2 64 비트 설치 프로그램을 64 비트 Windows 컴퓨터에서 사용하고 있습니다. postgreSQL에서 데이터를 마이그레이션하는 것이 잘 설명되어있는 http://maxdemarzi.com/2012/02/28/batch-importer-part-2/#more-660 블로그를 추적했습니다.mysql 데이터를 neo4j 데이터베이스로 마이그레이션

심지어 동일한 예제를 사용하고 mysql에서 sames 테이블을 만들었습니다. mysql에서 노드와 관계 테이블을 생성 한 후, csv 파일로 내 보낸다. 그래서 나는 그것들을 batch import 명령에서 사용할 수 있습니다. 여기 내 모든 필드는 varchar이고 row_number() fiels는 varchar 필드이기도합니다. 쿼리 아래 사용

SELECT * 
INTO OUTFILE 'D:/Tech_Explorations/BigData_Related/Neo4j/mqytoneo4j/myrels.csv' 
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
ESCAPED BY '"' 
LINES TERMINATED BY '\n' 
FROM 
(
SELECT 'start' AS `start`, 'end' AS `end`,'type' AS `type`,'status' AS `status` 
UNION ALL 

SELECT `start`, `end`,`type`,`status` 
FROM `vouch_rels` 
) `sub_query`; 

myrels.csv 오 neo4j mynodes.csv을로드하고 :

나는 myrels.csv 파일로 (노드 테이블 같은 일을) 수출 mysql을의 관계 테이블에 아래 명령을 사용 : 내가 위의 일괄 가져 오기 쿼리를 실행하면

java -server -Xms1024M -jar D:/Neo4j/target/batch-import-jar-with-dependencies.jar  
neo4j/data/graph.db mynodes.csv myrels.csv 

, 그것은 나에게 말하는 오류를주고

Exception in thread "main" java.lang.NumberFormatException: For input string: "1 
,"1","python,confirmed" 

여기서 "1,"1 ","python, confirmed "은 myrels.csv의 행입니다.

위의 오류는 일부 데이터 유형 또는 csv 파일 문제로 인한 것일 수 있지만이를 파악할 수는 없습니다. 심지어 나는 mysql에서 CSV 파일로 로딩하는 동안 다른 CSV로드 옵션을 변경하려고 시도했다. 하지만 여전히 같은 오류가 발생합니다.

답변

0

나는 LOAD CSV 사이퍼 옵션을 제안합니다. Neo4j website에 대한 자세한 문서가 있습니다.

기본적으로 다음과 같은 Cypher 쿼리를 사용하여 데이터를 가져올 수 있습니다.

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "file:/path/to/your.csv" AS csvLine 
MATCH (person:Person { id: toInt(csvLine.personId)}),(movie:Movie { id: toInt(csvLine.movieId)}) 
CREATE (person)-[:PLAYED { role: csvLine.role }]->(movie) 

Java 배치 가져 오기 도구를 계속 사용하려면 파일을 쉼표로 구분 된 탭으로 구분해야한다고 생각합니다.

+0

mysql에서 neo4j로 데이터를 마이그레이션하려는 경우 java 일괄 가져 오기를 사용하고 싶습니다. 하지만 csv 파일을 탭으로 구분해야하는 이유는 무엇입니까? 거기에 어떤 이유가 있습니까? – shree11

+0

Github 페이지 https://github.com/jexp/batch-import#neo4j-csv-batch-importer에서 굵은 글씨체로 "하나의 탭으로 구분 된 CSV 파일을 제공합니다"라고 굵게 표시되어 있습니다. – stephenmuss

+0

또한 링크 'http : //stackoverflow.com/questions/20597702/how-to-import-csv-file-into-neo4j-numberformatexception? rq = 1'에서 같은 문제가 발견되었습니다. 거기에 쉼표로 구분 된 CSV 파일을 사용하고 싶다면, batch_import.csv.delim =,'my batch.properties '를 설정해야합니다. 하지만 어디에서 batch.properties 파일을 찾을 수 있습니까? 또한 배치 가져 오기 명령을 실행 한 후 cayeyed 하나의 batch.properties 파일을 발견했습니다. 이 파일에'batch_import.csv.delim =,'을 추가해야합니까? – shree11

2

MySQL에서 Neo4j 로의 마이그레이션은 직접적인 내보내기로드 문제는 아닙니다. 속성 그래프는 Neo4j에서 명확해야하며 MySQL 스키마와 일치해야합니다. Neo4j 속성 그래프를 MySQL 스키마에서 자동으로 생성하는 방법은 없습니다. 2 개의 스키마가 잘 정의 된 후에는 모든 프로그래밍 언어로 고유 한 마이그레이션을 작성할 수 있습니다.

py2neo을 마이그레이션을 수행하는 파이썬 방법 등은 유용한 기능의 톤을 제공하기 때문에 쉽게 마이그레이션을 작성할 수 있습니다 파이썬 라이브러리, 사이퍼 쿼리를 실행하는 옵션, 트랜잭션 지원,

입니다

프로젝트에서 py2neo를 사용하여 MySQL에서 Neo4j로 약 100MB의 데이터를 마이그레이션했습니다. Here은 설명서와 함께 참조 용 샘플 코드입니다. 데이터는 제공되지 않지만 MySQL과 Neo4j 속성 그래프의 스키마가 제공됩니다.

P .: 문제를 해결하지 못했을 수 있습니다. 그러나 Python을 사용하여 MySQL을 Neo4j로 마이그레이션하는 문제를 해결하고자하는 독자에게 도움이 될 수 있으므로이 답변을 작성했습니다.

관련 문제