1
我的任務是將數據導出到CSV文件。我試圖在將數據導出到CSV文件之前生成一個查詢。每個學生都有一個唯一的ID。就目前而言,我可以單獨導出不同表格中的數據,並且運行良好。將SQLite數據導出爲CSV
這是我目前的架構:
1)學生表
studID | name | teacher | activity
SQ202 Mich Lisa Hearing Test
FG91A Lim Hanson Behavioural Test
2)會話表(每個學生都可以有多個會話 - 不固定)
studID | startTime | endTime | sessionNo | status
SQ202 10:00 10:40 1 Completed
SQ202 13:00 13:50 2 Completed
FG91A 14:20 15:00 1 Completed
3 )間隔表(每個會話可以有四個以上的間隔 - 不固定)
studID |sessionNum |intervalNo | score
SQ202 1 1 10/10
SQ202 1 2 7/10
.
.
.
這是我從一個特定的表中導出數據:
File exportDir = new File(Environment.getExternalStorageDirectory(), "");
if (!exportDir.exists()) {
exportDir.mkdirs();
}
file = new File(exportDir, 「ChildObservation" + " (D)" + date + " (T)" + time +".csv");
try {
file.createNewFile();
CSVWriter csvWrite = new CSVWriter(new FileWriter(file));
// sqlite core query
SQLiteDatabase db = myNewGradingDB.getReadableDatabase();
Cursor curChild = db.rawQuery("SELECT * FROM Student ORDER BY name", null);
csvWrite.writeNext(「Student ID」, 「Name」, 「Teacher」, 「Activity");
while (curChild.moveToNext()) {
String arrStr[] = {
curChild.getString(0), curChild.getString(1),
curChild.getString(2), curChild.getString(3),
};
csvWrite.writeNext(arrStr);
}
csvWrite.writeNext();
csvWrite.close();
return true;
}
catch (IOException e) {
Log.e(「Child", e.getMessage(), e);
return false;
}
然而,我的目標是檢索和顯示在單行綁在學生中的所有數據。導出的Excel工作表中的每一行都將包含來自學生表&會話表的所有數據以及來自間隔表的相應間隔編號和分數。我嘗試過使用內部連接和不同類型的查詢,但在這些行中仍然存在一些重複的值。每個單元格只能包含一個值,因此在這種情況下,我將無法連接查詢中的列。
這裏是我想達到的目標:
studID | name | teacher | activity | startTime | endTime | sessionNo | status | intervalNo | score | intervalNo | score ... (repeat intervalNo and score)
SQ202 Mich Lisa Hearing Test 10:00 10:40 1 Completed 1 10/10 2 7/10 ...
FG91A Lim Hanson Behavioural Test 12:30 1:40 2 Completed 1 8/10 2 6/10 ...
在這個階段,它不可能爲我改變數據庫設計。也許有其他方法可以解決這個問題,無論是通過SQL還是其他方式。任何幫助或建議將不勝感激。謝謝。
因此,每個dest行包含Student + session + Interval1 + Interval2 + Interval3 + Interval4數據? – k3b
@ k3b是的,這是正確的。 – CourageousLemon
看着這個需求,我覺得在程序中做格式化會更好(性能明智),而不是SQLite。 – PK20