我在向SQLite數據庫發送查詢時遇到了問題。在excel表格(或SQLite)中填充空單元格的最近填充單元格的值高於
問題是數據庫(源自Excel工作表)有空單元格,其中應該有值,從上面的單元格給出的值在同一列中。
換句話說,如果值沒有改變,excel工作表的製造者已將同一列中的單元格留空。我實際上需要這些單元格中的值!
由於sheet/db的大小,我無法手動執行此操作,有沒有辦法以編程方式執行此操作?
我真的更喜歡sql查詢的方式,如果有的話!
最良好的祝願, 托爾
我在向SQLite數據庫發送查詢時遇到了問題。在excel表格(或SQLite)中填充空單元格的最近填充單元格的值高於
問題是數據庫(源自Excel工作表)有空單元格,其中應該有值,從上面的單元格給出的值在同一列中。
換句話說,如果值沒有改變,excel工作表的製造者已將同一列中的單元格留空。我實際上需要這些單元格中的值!
由於sheet/db的大小,我無法手動執行此操作,有沒有辦法以編程方式執行此操作?
我真的更喜歡sql查詢的方式,如果有的話!
最良好的祝願, 托爾
您查詢整個分貝,保持原來的排序順序,然後每一行迭代。如果某些內容爲空,則使用上面的值更新它。
編輯:你可能有類似這樣的東西在這裏做到這一點:
SQLiteDatabase db = SQLiteDatabase.openDatabase("myDb.db", null, SQLiteDatabase.OPEN_READWRITE);
Cursor c = db.query("table", null, null, null, null, null, "the column that defines the sort order");
if (c != null) {
int columnCount = c.getColumnCount();
String[] lastValues = new String[columnCount];
while (c.moveToNext()) {
ContentValues cv = new ContentValues();
for (int i = 0; i < columnCount; i++) {
String value = c.getString(i);
if (TextUtils.isEmpty(value)) {
// if that happens on first column you are screwed anyways.
cv.put(c.getColumnName(i), lastValues[i]);
} else {
lastValues[i] = value;
}
// we need to save some id here
}
if (cv.size() > 0) {
// use the id here
db.update("table", cv, "column=?", new String[] { "id" });
}
}
c.close();
}
但我會建議你使用Excel來修復數據庫。這很容易,你不需要了解上面的代碼。
我該如何執行該操作? – user1264884 2012-03-12 19:13:42
查看更新的答案 – zapl 2012-03-12 20:08:19
你可以在Excel中做到這一點。我回答了類似的問題在這裏:
Blank Values in Excel File From CSV (not just rows)
您也可以在Excel中做到這一點完全:
選擇列(或任何範圍您正在使用),然後去到 編輯>轉到(Ctrl + G)並單擊特殊。檢查空白&單擊確定。此 將只選擇列表中的空單元格。現在鍵入=鍵, 然後向上箭頭和按Ctrl-輸入。
這會在每個空白單元格中放入一個公式,使它等於 以上的單元格。然後,您可以複製^粘貼值,以擺脫 公式。
與@maneesha提出的方法類似的方法是過濾空白單元格,然後寫入「等於上部單元格」公式,然後清除過濾器。
但我認爲@maneeshas的解決方案更酷。
這是一個android問題嗎?如果不適用,請考慮刪除標籤。 – Kekoa 2012-03-12 19:11:34
是的,沒有。數據庫適用於android應用程序,雖然它不是一個android特定的問題。標籤已移除。 – user1264884 2012-03-12 19:17:45
如果忘記了數據入口,您如何知道上面的內容是正確的? – datatoo 2012-03-12 19:27:18