Как сравнить содержимое (заголовок) файла с определенными переменными в 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(используйте сравнение строк, если порядок столбцов изменится в будущем) с именем столбца базы данных, и все готово.