Как сравнить содержимое (заголовок) файла с определенными переменными в Java и обновления в базе данных?

Я хочу, чтобы система прочитала файл csv, чтобы проанализировать заголовки и строки файла csv. Заголовки файла csv должны совпадать с переменными в ProductDetail.java. Если заголовки совпадают с этими переменными, вставьте строки, которые были прочитаны в базу данных под этими заголовками.

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. Было бы здорово, если бы вы могли помочь мне в этом.

2 ответа

Решение

С SuperCSV вы можете сделать это, чтобы проверить, что заголовки csv совпадают с ожидаемым заголовком. Как правило, ожидаемый заголовок является фиксированным. Итак, вы должны написать их как постоянные.

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();
    }
}
}

Прочитайте ссылку CSV это. CSV - это файл, разделенный запятыми, если вы читаете CSV и используете запятую в качестве разделителя и сопоставляете первую строку CSV(используйте сравнение строк, если порядок столбцов изменится в будущем) с именем столбца базы данных, и все готово.

Другие вопросы по тегам