Java字符串到Neo4J创建图语句

时间:2018-09-23 00:17:35

标签: java parsing neo4j compiler-construction jsqlparser

我必须根据查询结果创建一个图形。在基于检索到的列作为String(代表SQL语句的列)获取结果之后,我需要生成相应的图形创建语句,如下所示:

已检索列:

_fn1(filed1, filed2, filed3, '', filed4, filed5) AS new_alias_field

要在Neo4j上创建图形的句子:

CREATE (new_alias_field:fields_from {column:'new_alias_field'})
CREATE (filed1:fields_to{column:'filed1'})
CREATE (filed2:fields_to{column:'filed2'})
CREATE (filed3:fields_to{column:'filed3'})
CREATE (filed4:fields_to{column:'filed4'})
CREATE (filed5:fields_to{column:'filed5'})

CREATE (fn1:function {name:'_fn1'})

  CREATE
  (filed1)-[:used_by {roles:['param']}]->(fn1),
  (filed2)-[:used_by {roles:['param']}]->(fn1),
  (filed3)-[:used_by {roles:['param']}]->(fn1),
  (filed4)-[:used_by {roles:['param']}]->(fn1),
  (filed4)-[:used_by {roles:['param']}]->(fn1)

CREATE
  (fn1)-[:as ]->(new_alias_field)

完成此操作的最佳方法是创建解析器?还是应该使用JSqlParser之类的东西,因为原始字符串中包含一些SQL语句? 我应该创建自己的解析器吗?还有其他可用的工具吗?

我试图使用JSqlParser,获取对象,然后将其转换。仍在进行中。

尝试使用Neo4J中的代码,运行创建脚本后,您可以使用以下命令查询节点:

Match(new_alias_field{column:'new_alias_field'}) return new_alias_field

您必须获得:

Result Graph

1 个答案:

答案 0 :(得分:0)

JSqlParser是一个很棒的解析器,它使用访问者模式。我曾经使用下一个表达式来解析此语句

<p>Please write something down and press "enter".</p>

<input id="userInput" type="text" onKeyDown="if(event.keyCode==13) switchStatement();">

<p id="feedback"></p>

我发现的唯一限制是:尚不支持MSQL中使用的IF语句。

一旦我解析了这些语句,便使用了Spring注释

select <<statement>> from dual

要创建所有实体并进行插入,例如,FieldsFrom节点将如下所示:

@NodeEnityty

经过所有处理以及我使用的所有插入https://github.com/neo4j-contrib/neovis.js