0

我想使用一些 CSV 文件创建一个简单的数据库,例如:attore.csv、film.csv、recita.csv。

我成功创建了带有 Attore 和 Film 标签的节点,简单的文件如下:

attore.csv:

    nome
    nome1
    nome2
    nome3

电影.csv

    titolo
    titolo1 
    titolo2 
    titolo3 

我正在尝试使用 recita.csv 创建它们之间的关系,其中每一行是:

attore, film

Obv 我的主键应该是 Attore(nome) 和 Film(titolo)。我一直在寻找这么多时间,我发现了很多代码但没有一个工作,我所做的每次尝试都只运行了大约一个小时。

这就是我所做的:

我创建了电影节点:

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "file:///film.csv" AS row
CREATE (n:Film) 
SET n = row, n.titolo = (row.titolo), n.durata = (row.durata), 
n.genere = (row.genere), n.anno = (row.anno), n.descrizione = 
(row.descrizione), n.regista = (row.regista), 
n.studio_cinematografico = (row.studio_cinematografico)

然后我创建了 attore 节点:

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "file:///attore.csv" AS row
CREATE (n:Attore) 
SET n = row, n.nome = (row.nome)

然后,经过这么多尝试,我认为这是建立关系的确切方法,但没有奏效:

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "file:///recita.csv" AS row
MATCH (attore:Attore {nome: row.attore})
MATCH (film:Film {titolo: row.film})
MERGE (attore)-[:RECITA]-(film);

我希望有人能告诉我建立关系的正确方法,谢谢。

编辑:我的文件 attore.csv 的结构示例:

nome
Brendan Fraser
Bett Granstaff
Leslie Nielsen
Martina Gedeck
Martin Sheen

电影.csv:

titolo   durata   genere   anno   descrizione   regista   studio_cin
Mortdecai    80    Action  2015   *something*   David Koepp  Liongate

朗诵.csv:

attore       film
Johnny Depp   Mortdecai
Jason Momoa   Braven
4

1 回答 1

0

而不是您正在使用的方法。我建议使用 Merge 而不是 Create,这样可以避免重复:

USING PERIODIC COMMIT 
LOAD CSV WITH HEADERS FROM "file:///attore.csv" AS row
MERGE (a:Attore{nome: row.nome})
RETURN a

同样适用于film.csv,只是用逗号分隔属性。

其次考虑您的 csv 文档格式,再次检查 .csv 格式文档。从您所解释的内容来看,如果您想让您的代码正常工作,您需要在您的 recita.csv 中只有两列(attore,film),而不是 6 列(attore,film attore,film attore,film),因为它们是相同的,但是列标识符(名称)应该是唯一的,您不需要重复 attore 和 film 3 次。

请检查所有文件的标题或使用 csv 示例扩展您的问题。

尝试根据 csv 格式要求更改您的 recita.csv 文件。

于 2019-08-24T19:57:26.890 回答