java - 从 MySQL JPA 应用程序下载 CSV 的优化方法

标签 java mysql jpa opencsv

我的 MySQL 中有大约 300k 行的表与 Hibernate JPA 应用程序连接。我们需要提供一种从 UI 应用程序下载 csv 数据的方法。

如果我们使用 hibernate 查询数据并使用 opencsv csv writer 构建 csv,那么生成 csv 的速度非常慢并且需要很长时间。

更快地下载 csv 的最佳方法是什么? mysql 中有没有一种方法可以使用某些查询直接在磁盘上生成 csv 并将 csv 返回给用户?或者还有其他更快的方法吗?

最佳答案

只需使用 FileWriter 并在每列后添加逗号并以 csv 扩展名保存文件即可轻松生成 CSV 文件

private static void generateCsvFile(String sFileName) {
    try {
        FileWriter writer = new FileWriter(sFileName);

        writer.append("DisplayName");
        writer.append(',');
        writer.append("Age");
        writer.append('\n');

        writer.append("YOUR NAME");
        writer.append(',');
        writer.append("100");
        writer.append('\n');

        // generate whatever data you want

        writer.flush();
        writer.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

现在从数据库读取并为每条记录继续添加到文件中

编辑:-

SELECT display_name,age FROM user INTO OUTFILE '/tmp/user.csv' FIELDS     TERMINATED BY ','  LINES TERMINATED BY '\r\n'; 

使用上面的查询可以直接下载csv

关于java - 从 MySQL JPA 应用程序下载 CSV 的优化方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33852365/

相关文章:

java - 比较器返回类型与整数不兼容

php - 使用 MySQL 和/或 PHP 的数学运算

python - 解析 xml 文件并将其存储到数据库中

php - mysql查询只返回一行

java - JPA 中带有 IN 子句的位置参数

java - JTextField 在文本更新后响应按键事件

java - 没有堆栈跟踪的线程异常

java - 持久化:ManyToMany 到同一个类

java - jpa 和 struts 项目中持久性提供程序的问题

java - 如何以编程方式为 Servlet 添加监听器?