Created
April 25, 2018 23:34
-
-
Save eliassoares/1582414f26638a7be26cb813664b4c68 to your computer and use it in GitHub Desktop.
Tutorial Neo4j
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1° Configura os nós: | |
-Configurando o nó para busca: | |
CREATE INDEX ON :Person(personID); | |
CREATE INDEX ON :Person(name); | |
-Configurando a chave: | |
CREATE CONSTRAINT ON (p:Person) ASSERT p.personID IS UNIQUE; | |
#Um INDEX não pode ser usado como chave, caso o tenha feito, usa-se: | |
DROP INDEX ON :Person(name); | |
para retirar o index. | |
2º Após preparar os nodos, importamos os nodos do csv. Para importar um csv com nodos, com o nome "academic.csv", com as colunas "personID" e "name", usa-se os passos: | |
-Colocar o arquivo na pasta import do neo4j e descomentar a parte do arquivo e configuração que se trata disso. | |
-Usa-se o comando: | |
USING PERIODIC COMMIT 1000 LOAD CSV WITH HEADERS FROM "file:/academic.csv" AS csvLine CREATE (:Person {personID: csvLine.personID, name: csvLine.name}); | |
-Para criar index de busca para linkar os relacionamentos, usa-se: | |
3º Configura as arestas: | |
-Para acrescentar os relacionamentos, em um csv com o nome de "relationships.csv", com as colunas "studentID", "teacherID" e "type" usa-se: | |
USING PERIODIC COMMIT 1000 | |
LOAD CSV WITH HEADERS FROM "file:/relationships.csv" AS csvFile | |
MATCH (student:Person {personID: csvFile.studentID}) | |
MATCH (teacher:Person {personID: csvFile.teacherID}) | |
MERGE (student)-[:WAS_ORIENTED {type:csvFile.type}]->(teacher); | |
4º Caso seja necessário limpar o banco de dados, usa-se os comandos: | |
MATCH (n) | |
OPTIONAL MATCH (n)-[r]-() | |
DELETE n,r; | |
#------------------------------------------------------------------------------------------------------# | |
-Código usado na minha máquina: | |
CREATE INDEX ON :Person(name); | |
CREATE INDEX ON :Person(first_name); | |
CREATE INDEX ON :Person(middle_name); | |
CREATE INDEX ON :Person(last_name); | |
CREATE CONSTRAINT ON (p:Person) ASSERT p.personID IS UNIQUE; | |
#USING PERIODIC COMMIT 50000 LOAD CSV WITH HEADERS FROM "file:///academic2.csv" AS csvLine CREATE (:Person {personID: csvLine.personID, name: csvLine.name, email: csvLine.email, webpage: csvLine.webpage, userID:csvLine.userID}); | |
USING PERIODIC COMMIT 50000 LOAD CSV WITH HEADERS FROM "file:///lattes_academic_nodes_v6.csv" AS csvLine | |
OPTIONAL MATCH (p:personID {personID:csvLine.personID}) | |
CREATE (:Person {personID: csvLine.personID, name: csvLine.full_name, last_name: csvLine.last_name, middle_name: csvLine.middle_name, first_name: csvLine.first_name, email: csvLine.email, webpage: csvLine.webpage, userID:csvLine.userID, original_baseID: csvLine.original_baseID}); | |
USING PERIODIC COMMIT 50000 | |
LOAD CSV WITH HEADERS FROM "file:///lattes_academic_relationship_v6.csv" AS csvFile | |
MATCH (student:Person {personID: csvFile.studentID}) | |
MATCH (teacher:Person {personID: csvFile.teacherID}) | |
MERGE (teacher)-[:SUPERVISED {type: csvFile.type, research_area: csvFile.research_area, research_sub_area: csvFile.research_sub_area, title: csvFile.title, year: csvFile.year, institution: csvFile.university_name}]->(student); | |
MATCH (a)-[r*]->() WHERE (a.last_name = 'benevenuto') RETURN r limit 300; | |
USING PERIODIC COMMIT | |
LOAD CSV WITH HEADERS FROM "file:/home/gondil/temp.csv" AS csv | |
FIELDTERMINATOR '|' | |
MERGE (m:Movie {title:csv.title }) | |
ON CREATE SET m.year = toInt(csv.year) | |
MERGE (k:Keyword {word:csv.word}) | |
-No servidor parte é diferente, troca-se o "file:/academic2.csv" por "file:///academic2.csv": |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment