将csv文件与MySQL数据库进行比较



我正在用Java创建一个程序,我需要比较csv文件中的数据是否与mysql表中的数据完全相同?我该怎么做?例如,我有一张桌子";Suplyers";其中列";Id、Name和Adress";。感谢

下面是我读取csv文件并连接到数据库并显示表中数据的代码。

您可以将CSV数据和DB数据收集到String的列表中,然后使用equals:比较列表

public static List<String> readCsvData() {
List<String> csvData = new ArrayList<>();
// use try-with-resources to auto close reader
try (BufferedReader csvReader = new BufferedReader(new FileReader("C:\Users\User\Desktop\ficheiros\fornecedores.csv"))){
String row;
while ((row = csvReader.readLine()) != null) {
String[] data = row.split(",");
row = String.join("t", data[0], data[1], data[2]);
System.out.println(row);
csvData.add(row);
}
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
return csvData;
}
public static void initDb() {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}

public static List<String> readDbData(){
initDb();
String url = "jdbc:mysql://127.0.0.1:3306/database";
String user = "user";
String password = "password";
String sql = "SELECT * FROM SUPLYERS";
List<String> dbData = new ArrayList<>();
// use try-with-resources to auto close SQL connection, etc.
try (Connection conn = DriverManager.getConnection(url, user, password);
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
) {
while (rs.next()) {
String row = String.join("t", rs.getString(1), rs.getString(2), rs.getString(3));
System.out.println(row);
dbData.add(row);
}
} catch (Exception exc) {
exc.printStackTrace();
throw new RuntimeException(exc);
}
return dbData;
}

public static boolean areCsvDataSameAsDb() {
List<String> csvData = readCsvData();
List<String> dbData = readDbData();

return csvData.equals(dbData);
}

或者,您可以逐行读取数据,以便在检测到任何差异时立即进行快捷检查。

最新更新