4

我对 Neo4j 很陌生。我是这个图形数据库的学习者。我需要将 csv 文件加载到 Neo4j 数据库中。我从 2 天开始尝试,我无法找到将 csv 文件读入 Neo4j 的好信息。请建议我将 csv 文件读入 Neo4j 的示例代码或博客。

示例:假设我有一个 csv 文件,这样我们如何将它读入 Neo4j

id  name    language
1   Victor Richards West Frisian
2   Virginia Shaw   Korean
3   Lois Simpson    Belarusian
4   Randy Bishop    Hiri Motu
5   Lori Mendoza    Tok Pisin
4

5 回答 5

4

您可能想尝试https://github.com/sroycode/neo4j-import

这会直接从一对 CSV 文件中填充数据(条目必须用逗号分隔)

构建:(你需要Maven)

sh build.sh

节点文件有一个必填字段 id 和您喜欢的任何其他字段

NODES.txt
id,name,language
1,Victor Richards,West Frisian
2,Virginia Shaw,Korean
3,Lois Simpson,Belarusian

关系文件有 3 个必填字段 from,to,type。假设您有一个字段年龄(长整数)和信息,关系文件将如下所示

RELNS.txt
from,to,type,age@long,info
1,2,KNOWS,10,known each other from school
1,3,CLUBMATES,5,member of country club

跑步:

sh run.sh graph.db NODES.txt RELNS.txt

将在当前文件夹中创建 graph.db,您可以将其复制到 neo4j 数据文件夹中。

注意:如果您使用的 neo4j 是 1.6.* 之后的版本,请在 conf/neo4j.properties 中添加这一行

allow_store_upgrade = true

玩得开心。

于 2012-12-04T08:45:11.980 回答
3

请看一下https://github.com/jexp/batch-import

可以作为起点

于 2012-10-25T19:42:55.453 回答
2

由于源数据结构和目标数据结构不同,因此无法将 CSV 数据一般地加载到 Neo4j 中:CSV 数据是表格数据,而 Neo4j 保存图形数据。

为了实现这样的导入,您需要添加一个单独的步骤来将表格数据转换为某种形式的图形(例如树),然后才能将其加载到 Neo4j 中。进一步以树形结构为例,下面的页面展示了如何将 XML 数据转换为 Cypher,然后可以直接针对 Neo4j 实例执行。

http://geoff.nigelsmall.net/xml2graph/

如果有帮助,请随意使用此工具(请记住它只能处理小文件),但这当然需要您先将 CSV 转换为 XML。

干杯

奈杰尔

于 2012-10-25T12:10:16.773 回答
1

neo4j 可能没有已知的 CSV 导入器,您必须自己导入:

我通常自己通过 gremlin 的 g.loadGraphML(); 功能。 http://docs.neo4j.org/chunked/snapshot/gremlin-plugin.html#rest-api-load-a-sample-graph

我用一些外部脚本将我的数据解析为 xml 语法并加载特定的 xml 文件。您可以在此处查看语法: https : //raw.github.com/tinkerpop/gremlin/master/data/graph-example-1.xml 解析 100mb 文件需要几分钟时间。

在您的情况下,您需要做的是一个简单的二分图,其顶点由用户和语言组成,以及“说话”的边缘。如果您知道一些编程,那么使用参数idname |创建用户节点 具有参数名称的唯一语言节点| 您需要将每个用户与特定语言联系起来的关系。请注意,用户可以是重复的,而语言不能。

于 2012-10-25T12:16:41.053 回答
0

我相信你的问题太笼统了。你的 csv 文件包含什么?csv 文件内容的逻辑含义可能会有很大差异。具有 ID 的两列示例,它们表示相互连接的实体。

3921 584
831 9891
3841 92
...

在这种情况下,您可以编写一个可以更快导入它的 BatchInserter 代码片段,请参阅http://docs.neo4j.org/chunked/milestone/batchinsert.html

或者,您可以使用常规的 GraphDatabaseService 导入,事务大小为数千个插入以提高性能。在http://docs.neo4j.org/chunked/milestone/tutorials-java-embedded.html了解如何设置和使用图形数据库。

于 2012-10-25T10:10:59.517 回答