【问题标题】:Compare CSV file with Neo4j results将 CSV 文件与 Neo4j 结果进行比较
【发布时间】:2018-10-24 12:31:17
【问题描述】:

我的任务是将 oracle 导出(类似 CSV 的格式,但不使用逗号作为分隔符)与 neo4j 导出进行比较。

一个oracle csv文件(可以有百万行)格式如下:

OBJECT_ID|'¦'|NAME|'¦'|SITE_LOCATION|'¦'|PARENT_ID|'¦'|LOCATION_CODE
9144735089013188062|¦|00|¦|9144735080313909184|¦|9144735085613119290|¦|O2GB

这里的OBJECT_ID是唯一的,数据是按它排序的。

  1. 现在我的第一种方法是使用一些 java 代码从 cypher db 创建一个类似的 csv,将密码查询的结果保存在 Map<String, Map<String, String>> 变量中,例如:

{"loc1"={ObjectId="9144735079813886326", NAME="locationName", SITE_LOCATION="位置", ParentId="9144735080313909184"}, "loc2"={ObjectId="9144735079813886326", NAME="locationName", SITE_LOCATION="Location", ParentId="9144735080313909184"}}

并将其导出为 csv。

然后我必须将两个 csvs 加载回 java 以便比较它们并创建某种报告,如果 2 个 csvs 中的值不匹配,我需要在其中包含键的名称。

  1. 我能想到的第二种方法是将 oracle csv 加载到 Map<String, Map<String, String>> 或某种数据类型中,并将其与我的密码结果进行比较,从而跳过 neo4j 到 csv 的转换。

是否可以在一个类似的 Map 中逐行从每个 csv 并行加载,而无需同时将两个 csv 加载到内存中?

最好的方法是什么?

【问题讨论】:

  • 为什么要通过导出来做到这一点?考虑从 Oracle 读取一大块记录并查看 neo4j 中是否有相关对象(或相反)。
  • Oracle 转储无论如何都已完成,我认为我在构建报告、在 java 中处理所有内容方面比在 db 端更灵活,但我将打开这种方法来比较 dbs 本身

标签: java csv neo4j


【解决方案1】:

也许您应该将 CSV 加载到任何关系数据库(可能是您已经拥有的 Oracle)并使用 SQL 查询比较它们?

【讨论】:

    【解决方案2】:

    JSON 文件是否相同?你可以使用像Meld这样的差异工具

    【讨论】:

    • 文件是 CSV 格式,但分隔符不同,是的,它们是相同的,我不能使用任何工具,因为我必须坚持使用公司批准的组件。
    猜你喜欢
    • 2023-01-31
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多