我是Neo4J的新手,我想尝试一下我从MySQL导出的一些数据.我已经运行了社区版neo4j console,我正在使用neo4j-shell命令行客户端输入命令.
我有2个CSV文件,用于创建2种类型的节点,如下所示:
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:/tmp/updates.csv" AS row
CREATE (:Update {update_id: row.id, update_type: row.update_type, customer_name: row.customer_name, .... });
CREATE INDEX ON :Update(update_id);
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:/tmp/facts.csv" AS row
CREATE (:Fact {update_id: row.update_id, status: row.status, ..... });
CREATE INDEX ON :Fact(update_id);
Run Code Online (Sandbox Code Playgroud)
这给了我大约650,000个更新节点和21,000,000个Fact节点.
索引在线后,我尝试在节点之间创建关系,如下所示:
MATCH (a:Update)
WITH a
MATCH (b:Fact{update_id:a.update_id})
CREATE (b)-[:FROM]->(a)
Run Code Online (Sandbox Code Playgroud)
这失败了OutOfMemoryError.我相信这是因为Neo4J在事务完成之前不会提交事务,而是将其保留在内存中.
我该怎么做才能防止这种情况发生?我已经读过USING PERIODIC COMMIT但看起来这只在阅读CSV时有用,因为它在我的情况下不起作用:
neo4j-sh (?)$ USING PERIODIC COMMIT
> MATCH …Run Code Online (Sandbox Code Playgroud) 我正在做一个涉及Neo4J Db的项目,我正面临一个我自己无法解决的问题.
我们正在图中处理Acl.每个Acl都链接到一组元数据.项目也链接到这些元数据.当链接到项目的所有元数据也链接到元数据时,元数据授予对一个项目的访问权限.
这是图模型的图片: ACL图片图片
在此示例中,ACL1授予对item1(但不是item2)的访问权限,并且acl2授予对item2(但不是item1)的访问权限.
我认为诀窍是将节点上的ALL谓词链接到一个项目,但我的尝试总是返回图形中的所有项目(因为它们共享一个元素)
有人可以帮我创建密码查询,以便为一个用户返回他可以访问的所有项目吗?
谢谢你的帮助,格雷戈里
PS:这是一个Neo4j控制台示例数据集:http://console.neo4j.org/r/urjh64
我有以下数据,表示两个对象之间的距离.
data = [[('123','234'), 10],
[('134','432'), 12],
]
Run Code Online (Sandbox Code Playgroud)
我想通过py2neo v3将它插入到neo4j中:
for e, p in enumerate(data):
#
id_left = p[0][0]
id_right = p[0][1]
distance = p[1]
#
left = Node("_id", id_left)
right = Node("_id", id_right)
G.merge(left)
G.merge(right)
r = Relationship(left,'TO', right, distance=distance)
G.create(r)
#
Run Code Online (Sandbox Code Playgroud)
但我发现这非常非常慢.加速这项工作的最佳方法是什么?我环顾四周,但没有找到任何代码示例,清楚地说明了如何去做
所以我使用了 Neo4j 沙箱,并且那里有一个完整的图表,但是我的沙箱即将过期,所以我必须导出数据,并将其导入到我的本地主机社区 Neo4j 实例中,我尝试使用 APOC,但问题是当我调用它时apoc.export.cypher.all(.....)它不起作用,因为我必须在我的沙箱实例中添加文件apoc.export.file.enabled=true。neo4j.conf
-> 整个错误:Failed to invoke procedure apoc.export.cypher.all : Caused by: java.lang.RuntimeException: Export to files not enabled, please set apoc.export.file.enabled=true in your neo4j.conf
这里的问题是我无法访问沙箱上的配置文件,但我可以使用cypher-shell.
有什么建议可以让我在沙箱过期之前导出我的数据吗?提前致谢 !!
在 Testcontainers 文档中,有一个使用 @ParameterizedTest 参数化 docker 映像的示例。
这是一个 junit4 示例。
@RunWith(Parameterized.class)
public class ParameterizedDockerfileContainerTest {
private final String expectedVersion;
@Rule
public GenericContainer container;
public ParameterizedDockerfileContainerTest(String baseImage, String expectedVersion) {
container =
new GenericContainer(
new ImageFromDockerfile()
.withDockerfileFromBuilder(builder -> {
builder
.from(baseImage)
// Could potentially customise the image here, e.g. adding files, running
// commands, etc.
.build();
})
)
.withCommand("top");
this.expectedVersion = expectedVersion;
}
@Parameterized.Parameters(name = "{0}")
public static Object[][] data() {
return new Object[][] { //
{ "alpine:3.12", "3.12" }, …Run Code Online (Sandbox Code Playgroud) 有没有办法用py2neo来获取图中所有连接的节点.通过关系连接的所有节点?
我下载并安装了neo4j-php-client和neo4j 2.3.2.实际上一切正常,但我只是想知道为什么这个php客户端没有错误处理程序?例如,如果cypher查询中存在错误,则没有错误抛出很容易捕获它.我通过网络搜索,但我找不到解决方案.
有人知道如何打开错误处理程序吗?
提前致谢.
neo4j ×6
cypher ×5
py2neo ×2
acl ×1
cypher-shell ×1
graphaware ×1
intersection ×1
java ×1
junit5 ×1
neo4j-apoc ×1
php ×1
predicates ×1