0
我有一個服務器備份分貝,併發送給我每次分貝... btw bc我不想每次發送50mb的分貝我做了一個像合併2數據庫具有相同的結構
delete from table where timestamp < ?
得到分貝最後的時間戳,並以這種方式我只能發送最新的數據保存在一個備份 (幾KB,而不是50MB)
現在我想再拍程序合併的不同的備份... 我「插入」在插入部分...
public static void merge(String toMerge) {
Connection c, c2 = null;
Statement stmt, stmt2 = null;
try {
Class.forName("org.sqlite.JDBC");
c = DriverManager.getConnection("jdbc:sqlite:merge.db");
System.out.println("Opened merge.db database successfully");
c.setAutoCommit(false);
stmt = c.createStatement();
c2 = DriverManager.getConnection("jdbc:sqlite:" + toMerge);
System.out.println("Opened " + toMerge + " database successfully");
stmt2 = c2.createStatement();
ResultSet rs = stmt2.executeQuery("SELECT * FROM messages;");
String sql;
while (rs.next()) {
sql = "INSERT INTO messages";
stmt.executeUpdate(sql);
}
rs.close();
stmt2.close();
c2.close();
stmt.close();
c.commit();
c.close();
} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
System.exit(0);
}
System.out.println("Operation done successfully");
}
我在想打開2分貝... 1有一個標準名稱「merge.db」(這樣我可以合併2+分貝),另一個是合併... 使用這種方法我打開(每個DB 1)2連接,並讀取DB2每一行,並在新的數據庫插入......但在這裏我有幾個問題
- 分貝有很多的cols所以我需要的使用200 getInt/String/Float
- 我有NULL值
- 我有很多行
所以如果我使用這種方法,它需要大量的瓦爾和時間,使插入查詢... (現在我正在寫這種方法,但如果有一個更簡單的方法來做這是更好.. 。我正在考慮用所有變量創建一個類,並使用它創建sql插入..這樣,我可以對不同的表使用相同的函數(只需要擴展其他類的類))
編輯 在表中我有blob實際int字符串值(共29列)