基于建议
in the git repo.使用Michael Hunger的
batch-import可以从一个.csv文件导入多个节点类型.
引用迈克尔:
Just put them all into one nodes file, you can have any attribute not
having a value in a certain row, it will then just be skipped.
所以我使用的一般方法是:
将所有节点表组合成一个名为nodes的新表:
>使用自动递增newID字段和类型字段创建新表节点. type字段将记录节点数据来自哪个表
>从3个节点表中添加允许空值的所有可能的列名称.
> INSERT INTO节点来自Person,然后是Organism,然后是Story,除了将类型字段设置为人物,有机体或故事.将任何不相关的字段留空.
在另一个新表中,rels基于sql JOIN将新创建的newID索引添加到Links表:
INSERT INTO rels
SELECT
n1.newID AS fromNodeID,
n2.newID AS toNodeID,
L.LinkType,
L.ID
FROM
Links L
LEFT JOIN
nodes n1
ON
L.fromID = n1.ID
AND
L.fromType = n1.type
LEFT JOIN
nodes n2
ON
L.toID = n2.ID
AND
L.toType = n2.type;
然后导出这两个新表节点并将其作为Tab分隔的.csv文件,并将其与批量导入一起使用:
$java -server -Xmx4G -jar target/batch-import-jar-with-dependencies.jar target/graph.db nodes.csv rels.csv