如何比较文件的内容 (header) 与 java 中定义的变量并在数据库中更新?

How to compare the content (header) of a file with the defined variables in java and update in database?

我想让系统读取csv文件,以便分析csv文件的headers和行。 csv 文件的 headers 应该与 ProductDetail.java 的变量匹配。如果 headers 与这些变量匹配,则将读取的行插入到那些 headers 下的数据库中。

ProductDetail.java

public class ProductDetail {
String street; 
String city; 

public String getStreet() {
    return street;
}

public void setStreet(String street) {
    this.street = street;
}

public String getCity() {
    return city;
}

public void setCity(String city) {
    this.city = city;
}
} 

ReadFile.java

public class ReadFile {
   public static void main(String[] args) {
   FileReader input = null;
        BufferedReader br = null;

        try {

            input = new FileReader("uploadedFile.csv");
            br = new BufferedReader(input);
            String str;

            while ((str = br.readLine()) != null) {
                System.out.println(str);
            }
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        finally {
            try {
                input.close();
                br.close();
            }
            catch (IOException x) {
                x.printStackTrace();
            }
        }
    }
}

我已经开始了这个项目,但现在我完全不知道如何读取列和行以及如何与 ProductDetail.java 中设置的预定义 headers 相匹配。如果你能帮助我,那就太好了。

Read CSV link this。 CSV 是逗号分隔文件,如果您读取 CSV,并使用逗号作为分隔符并将 CSV 的第一行(如果将来列顺序更改,则使用字符串比较)映射到数据库列名,您就完成了。

使用 SuperCSV,您可以这样做来验证 csv 的 header 是否与预期的 header 匹配。 通常,预期的 header 是固定的。所以,你应该把它们写成常量。

public static void main(String[] args) throws IOException {
CsvBeanReader csvBeanReader = null;
try {

    // your csv file
    String csvFile = null;
    csvBeanReader = new CsvBeanReader(csvFile), CsvPreference.EXCEL_NORTH_EUROPE_PREFERENCE);

    final String[] headersArray = csvBeanReader.getHeader(true);
    List<String> headers = Arrays.asList(headersArray);
    List<String> expectedHeaders = Arrays.asList("street", "city");
    if (!expectedHeaders.equals(headers)) {
        return;
    }

    final CellProcessor[] processors = new CellProcessor[] { new NotNull(), new NotNull() };

    List<ProductDetail> productDetails = new ArrayList<>();
    ProductDetail productDetail = null;

    while ((productDetail = csvBeanReader.read(ProductDetail.class, headersArray, processors)) != null) {
      productDetails.add(productDetail);
    }
    // save products in your DB
}
finally {
    try {
      csvBeanReader.close();
    }
    catch (IOException e) {
      e.printStackTrace();
    }
}
}