neo4j:使用uuid的密码加载CSV

neo4j:使用uuid的密码加载CSV,csv,neo4j,cypher,uuid,load-csv,Csv,Neo4j,Cypher,Uuid,Load Csv,我开始使用Cypher for Neo4J的LOAD CSV将更大的CSV文件导入我的数据库。我想向每个导入的节点添加一个唯一ID(uuid)作为属性 我的尝试是: LOAD CSV FROM "file:..." AS csvLine CREATE (c:Customer { uuid: {uuid}, name: csvLine[0], code: csvLine[1]}) 不幸的是,我为每个节点接收到相同的UUID(尽管这是一个调用时通常会生成新UUID的函数),看起来UUID生成了1次

我开始使用Cypher for Neo4J的LOAD CSV将更大的CSV文件导入我的数据库。我想向每个导入的节点添加一个唯一ID(uuid)作为属性

我的尝试是:

LOAD CSV FROM "file:..." AS csvLine
CREATE (c:Customer { uuid: {uuid}, name: csvLine[0], code: csvLine[1]})
不幸的是,我为每个节点接收到相同的UUID(尽管这是一个调用时通常会生成新UUID的函数),看起来UUID生成了1次,然后在创建节点和解析csv文件时附加到每个节点

是否有方法为每个导入的csv行生成新的UUID以标记节点

谢谢你的提示
Balael

不确定您在哪里看到{uuid}是一个函数。 它只是使用您传入的任何内容作为参数“uuid”

创建CSV时,必须生成uuid。 在cypher中,目前没有
uuid()
函数

您可以做的一个变通方法是:

LOAD CSV FROM "file:..." AS csvLine
CREATE (c:Customer { name: csvLine[0], code: csvLine[1]})
SET c.id = id(c)
您也可以使用

您只需将和放到plugins目录中,将以下两行添加到neo4j.properties中,然后重新启动neo4j

com.graphaware.runtime.enabled=true
com.graphaware.module.UIDM.1=com.graphaware.module.uuid.UuidBootstrapper

任何新节点(无论它是如何创建的)都将自动获得UUID。

您还可以使用csvkit()等工具在导入csv以获得UUID之前对其进行修改。您好,Michael,谢谢您在这里介绍。不幸的是,无法在CSV中生成UUID,因为它们来自我无法访问的系统。我知道UUID不能在每次创建节点时生成。此外,set命令只是重复向每个节点添加相同的UUID,例如uniqid()在PHP中,似乎不会被多次调用,因此每个节点只分配一个UUID——这与我想要创建的正好相反——一个唯一标识符。似乎我需要在CSV之后通过已创建的每个节点再次运行,并逐个节点添加一个UUID。如果您正在寻找一种方法来再次循环并添加一个UUID,而不需要一次只做一个节点,也许可以签出。可能会让你开始。嗨,Stefan,哇,这是一个整洁的工具,谢谢分享。同时,我在代码中添加了第二个循环,用UUID标记所有导入的节点——虽然不漂亮,但可以工作。我一定会看看csvkit!谢谢Chris,我会深入研究这个主题,如果我能根据自己的需要调整这个想法的话。嘿,Michal,谢谢你的回复,这个效果很好。你知道一些关于如何从源代码构建的资源吗?我不熟悉Java构建生态系统。从GIT(GIT clone)克隆项目后,安装名为Maven的Java构建工具。根据您的环境,macosx:“brew安装maven”,ubuntu/debian&co:“apt get安装maven”。然后您可以从命令行“cd neo4j uuid”然后“mvn clean install”。编译后的版本将驻留在您克隆的项目的“target/”目录中。注:这可能需要很长时间,因为所有单元测试都将启动,所有项目依赖项都将下载。