私は現在、プロセスやCPU使用率、バッテリー使用率などに関する多くの情報をテーブルに収集するプロジェクトを行っています。
たとえば、「ログテーブル」には「プロセス」、「ピッド」、「バッテリー」の列が含まれ、別のテーブル「CPUテーブル」には「プロセス」、「CPU時間」、「CPU使用率」などが含まれます。プログラムはこれらすべてのテーブルに同時に書き込むため、各読み取りにはすべてのテーブルにまたがる独自の行があります。
このすべての情報を取得し、すべてのプロセスに対して個別のCSVファイルを作成するプログラムを作成しました。これらのファイル内に、その特定のプロセスに関する4つのテーブルすべてからのすべての情報が必要です。
私が抱えている問題は、何らかの理由で、情報を取り込もうとすると、テーブルの1つが、他のテーブルのすべてのレコードのレコードを複製することです。
ご覧のとおり、「ログテーブル」の情報は正しく書き出されますが、「CPUテーブル」(右端の7列)の情報は、「ログ」のエントリごとに最初のレコードを繰り返し、その後、次に、ログのすべてのレコードに対して。
Procs [i]には、すべての一意のプロセス名が含まれています。
現在、私が使用しているsqlステートメントはであり、周囲の基本的なコードは次のとおりです。
String query = "SELECT * FROM log, cpuinfo WHERE log.Process = " + "'" + procs[i] + "'" + " AND cpuinfo.Process = " + "'" + procs[i] + "'";
System.out.println(query);
rs = sment.executeQuery(query);
writer = new CSVWriter(new FileWriter(procs[i] + ".csv"), ',');
//writer = new CSVWriter(procs[i] + ".csv");
//System.out.println("Writing.....");
//rs.beforeFirst();
writer.writeAll(rs, true);
//writer.
writer.flush();
プログラムがこれを実行し、CSVをこのように記述している理由を誰かが理解できますか?どんな助けでも大歓迎です、何週間もこのプログラムにとどまっていて無駄になり、Googleは助けていません!
ありがとう。
確認するための情報やコードが必要な場合は、質問してください。