【发布时间】: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是唯一的,数据是按它排序的。
- 现在我的第一种方法是使用一些 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 中的值不匹配,我需要在其中包含键的名称。
- 我能想到的第二种方法是将 oracle csv 加载到
Map<String, Map<String, String>>或某种数据类型中,并将其与我的密码结果进行比较,从而跳过 neo4j 到 csv 的转换。
是否可以在一个类似的 Map 中逐行从每个 csv 并行加载,而无需同时将两个 csv 加载到内存中?
最好的方法是什么?
【问题讨论】:
-
为什么要通过导出来做到这一点?考虑从 Oracle 读取一大块记录并查看 neo4j 中是否有相关对象(或相反)。
-
Oracle 转储无论如何都已完成,我认为我在构建报告、在 java 中处理所有内容方面比在 db 端更灵活,但我将打开这种方法来比较 dbs 本身