gpt4 book ai didi

java - 将多个表/列放入 CSV 文件

转载 作者:可可西里 更新时间:2023-11-01 07:37:32 25 4
gpt4 key购买 nike

我目前正在做一个项目,我将大量有关进程和 CPU 使用情况、电池使用情况等的信息收集到表格中。

例如,“日志表”包含“进程”、“Pid”、“电池”列,另一个表“CPU 表”包含“进程”、“CPU 时间”、“CPU 使用率”等列。该程序同时写入所有这些表,因此每个读数在所有表中都有自己的一行。

我创建了一个程序,它获取所有这些信息并为所有流程创建一个单独的 CSV 文件。在这些文件中,我想从所有四个表中获取有关该特定进程的所有信息。

我遇到的问题是,出于某种原因,当我尝试输入信息时,其中一个表会复制另一个表中每条记录的记录。

problem

如您所见,“Log table”中的信息正确写入,但“CPU table”中的信息(最右边的 7 列)为“Log”的每个条目重复第一条记录,然后执行第二个和Log的每条记录都一样。

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 也没有提供帮助!

谢谢。

如果您需要任何信息或要查看的代码,请务必询问!

最佳答案

您在这里隐式执行了 logcpuinfo 这两个表的内部联接,您需要决定如何正确关联 log< 中的一条记录 和来自 cpuinfo 的一条记录。您编写的查询有效地为 log 中的每条记录与 cpuinfo 中的每条记录创建了一个结果记录,然后您的 WHERE 子句限制了该结果仅设置为进程匹配的那些记录。

这似乎不是你想要的;在我看来,您可能想要关联进程匹配且时间戳也匹配的记录。天真地这可能看起来像下面这样:

SELECT * FROM log, cpuinfo WHERE log.Process = ?  AND cpuinfo.Process = ? 
AND log.Timestamp = cpuinfo.Timestamp

但是,我相信您的解决方案实际上比天真地比较时间戳要复杂一些。看起来可能有一种方法可以将时间戳从一个表匹配到另一个表,但看起来关联的时间戳可能不相同。例如,log 中最早的时间戳看起来像 26:04.2,而不是 cpuinfo 中的 26:04.3。您需要根据应用程序逻辑来决定将两个时间戳相互关联的方式。这将相应地影响您的 WHERE 子句。

关于java - 将多个表/列放入 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14606556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com