Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java将Access DB查询数据输出到csv文件_Java_Csv_Jackcess - Fatal编程技术网

使用Java将Access DB查询数据输出到csv文件

使用Java将Access DB查询数据输出到csv文件,java,csv,jackcess,Java,Csv,Jackcess,我能够打开数据库文件并获取查询名称和语句。如何将查询数据输出到csv?我以为他会这么做,但没用 Database db = Database.open(new File(args[0])); for(Query query : db.getQueries()) { System.out.println(query.getName() + ": " + query.toSQLString()); if query.getName(

我能够打开数据库文件并获取查询名称和语句。如何将查询数据输出到csv?我以为他会这么做,但没用

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);
        }
    }

我认为更好的选择是首先将数据库中的值存储到一个“二维”字符串列表中(我假设您知道如何做到这一点[如果不知道,请告诉我,我将进一步澄清])。然后使用FileWriter将数组写入CSV文件

这个例子取自

List rows=Arrays.asList(
asList(“Jean”、“author”、“Java”),
asList(“David”、“editor”、“Python”),
asList(“Scott”、“editor”、“Node.js”)
);
FileWriter csvWriter=新的FileWriter(“new.csv”);
csvWriter.append(“名称”);
csvWriter.追加(“,”);
csvWriter.append(“角色”);
csvWriter.追加(“,”);
csvWriter.append(“主题”);
csvWriter.append(“\n”);
对于(列表行数据:行){
追加(String.join(“,”,rowData));
csvWriter.append(“\n”);
}
csvWriter.flush();
csvWriter.close();

ExportUtil
不运行查询,它只转储表。您需要提供有效的表名作为第二个参数。如前所述,Jackcess无法执行sql查询。

请描述它如何不像错误消息那样工作,或者如果没有错误,则是实际输出。这是我在com.healthmarketscience.Jackcess.Cursor$Id上的线程“main”java.lang.NullPointerException中收到的错误消息。Cursor.java:1490位于com.healthmarketscience.jackcess.Cursor$tablecancursor.(Cursor.java:1334)位于com.healthmarketscience.jackcess.Cursor$tablecancursor.(Cursor.java:1322)位于com.healthmarketscience.jackcess.ExportUtil.exportWriter(ExportUtil.java:271)在DumpQuery.main(未知来源)感谢您的建议。我应该在脚本import com.healthmarketscience.jackcess.query.query中包含我使用的导入;导入com.healthmarketscience.jackcess.Database;导入com.healthmarketscience.jackcess.ExportUtil;导入com.healthmarketscience.jackcess.SimpleExportFilter;我想如果我能将查询行设置为a,那么我应该能够按照您的建议执行。好的,很好,试试看。如果你做不到,我以后会帮助你的。现在我要离开家,所以在接下来的2-3个小时内我不会碰我的电脑。@zjb嗨,我回来了。你能做吗?不,我没有(仍在努力哦,别担心,我相信你能做到。现在我在床上,快要睡觉了,但我明天会帮你解决这个问题。同时,你能澄清你用来访问数据库的查询以及结果集有多少列和行吗?:)
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();