我可以打开数据库文件并获取查询名称和语句。如何将查询数据输出到csv?我原以为他在exportWriter下面会这么做,但没用。
Database db = Database.open(new File(args[0]));
for(Query query : db.getQueries()) {
System.out.println(query.getName() + ": " + query.toSQLString());
if query.getName() = "thequerytooutput" {
BufferedWriter csvOut = new BufferedWriter(new OutputStreamWriter(System.out));
ExportUtil.exportWriter(db, query.getName(), csvOut, true, null, '"',
SimpleExportFilter.INSTANCE);
}
}
ExportUtil
不运行查询,只转储表。您需要提供一个有效的表名作为第二个参数。正如这里所指出的,jaccess没有执行sql查询的能力。
我认为更好的选择是首先将数据库中的值存储到";二维";字符串列表(我假设您知道如何做到这一点[如果不知道,请告诉我,我会澄清更多](。然后使用FileWriter将数组写入CSV文件。
此示例取自stackabuse.com
List<List<String>> rows = Arrays.asList(
Arrays.asList("Jean", "author", "Java"),
Arrays.asList("David", "editor", "Python"),
Arrays.asList("Scott", "editor", "Node.js")
);
FileWriter csvWriter = new FileWriter("new.csv");
csvWriter.append("Name");
csvWriter.append(",");
csvWriter.append("Role");
csvWriter.append(",");
csvWriter.append("Topic");
csvWriter.append("n");
for (List<String> rowData : rows) {
csvWriter.append(String.join(",", rowData));
csvWriter.append("n");
}
csvWriter.flush();
csvWriter.close();