微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 将几个表/列放入CSV文件中

我目前正在做一个项目,我收集了很多有关进程和cpu使用情况,电池使用情况等信息.

例如,“Log table”包含列’Process’,’Pid’,’Battery’和另一个表“cpu Table”,包含例如’Process’,’cpu Time’,’cpu Usage’.程序同时写入所有这些表,因此每个读数在所有表中都有自己的行.

我创建了一个程序来获取所有这些信息,并为所有进程创建一个单独的CSV文件.在这文件中,我希望获得所有四个表中有关该特定进程的所有信息.

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

正如您所看到的,“日志表”中的信息正确写出,但来自“cpu表”(最右边的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?任何帮助将非常感激,被困在这个程序几个星期现在无济于事,谷歌没有帮助!

谢谢.

如果您需要任何信息或代码,请查询

解决方法:

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐