读取Java中的.dat文件并与数据库表结果进行比较

时间:2018-07-05 18:21:59

标签: java database

我的要求是我们从开发人员那里获取.dat文件,我们需要验证.dat文件和数据库表结果是否相同

.dat示例文件如下

3009706 ~~ F18130000010 ~~ R60629572 ~~ 0 ~~ 936 ~~ 1 ~~ PA4 ~~ PA3 ~~~~~~~~~~~~~ Y ~~ 3009712 ~~ F18130000020 ~~ R50160248 ~~ 0 ~~ 430 ~~ 1 ~~ PA4 ~~ PA3 ~~~~~~~~~~~~~ Y ~~ 3009723 ~~ 8062229458PM ~~ R99999999 ~~ 0 ~~ 439 ~~ 1 ~~ PA4 ~~ PA3 ~~~~~~~~~~~~~ Y ~~ 3009728 ~~ 8028190839PM ~~ R57884273 ~~ 0 ~~ 936 ~~ 1 ~~ PA4 ~~ PA3 ~~~~~~~~~~~~~ Y ~~

样本数据库表

enter image description here

我需要从.dat文件中读取每一行,使用第一个值为主键的查询数据库,并将db结果与.dat文件结果进行比较。每列用~~符号分隔。同样,我需要将所有行与数据库结果进行比较。

就像我一样,我有很多文件。因此,一个表一个.dat文件。手动比较需要付出很多努力。需要自动化这个过程 我在想的步骤是

  1. 获取.dat文件中的行数,并将其与数据库数进行比较
  2. 逐行读取数据文件中的数据并捕获所有值,并使用主键使用该主键查询数据库表以获取结果。
  3. 将结果与.dba文件行进行比较。如果db中的数据为空,则.dat文件中没有任何条目,还需要验证每个列分隔是否存在~~。

请提供任何以Java开头的想法或代码

预先感谢

1 个答案:

答案 0 :(得分:1)

通过循环读取每个字符串,并用~~分隔每一行,然后保存到列表或数组中,并通过Index明智地与db比较。

    // Read File code line by line
    File file = new File("xyz.dat");
    BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));

    List<String[]> list = new ArrayList<>();
    String line;
    while((line = br.readLine())!=null) {
        String[] str = line.split("~~");
        list.add(str);
    }

    // Traverse Code from List and Array
    for(String arr[] : list) {
        if(arr[1] == "") // write code as per your usage
    }

在遍历列表之后,并使用String []索引与您的数据库进行比较。