日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

jdbc如何写csv文件_Java:将JDBC结果集作为CSV流化

發(fā)布時間:2023/12/3 java 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jdbc如何写csv文件_Java:将JDBC结果集作为CSV流化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

jdbc如何寫csv文件

在上一篇文章中 ,我展示了如何將java.sql.ResultSet轉(zhuǎn)換為JSON并將其流回調(diào)用方。 這篇文章是關(guān)于以CSV格式流式傳輸。 流式傳輸使您可以一點一點地傳輸數(shù)據(jù),而不必將所有數(shù)據(jù)都加載到服務(wù)器的內(nèi)存中。

例如,考慮以下ResultSet :

+---------+-----+ | Name | Age | +---------+-----+ | Alice | 20 | | Bob | 35 | | Charles | 50 | +---------+-----+

相應(yīng)的CSV為:

name,age Alice,20 Bob,35 Charles,50

以下類(在我的GitHub Repository中也可用)可用于將ResultSet轉(zhuǎn)換為CSV。 請注意,該類實現(xiàn)Spring的ResultSetExtractor , JdbcTemplate可以使用它從ResultSet提取結(jié)果。

/*** Streams a ResultSet as CSV.*/ public class StreamingCsvResultSetExtractorimplements ResultSetExtractor<Void> {private static char DELIMITER = ',';private final OutputStream os;/*** @param os the OutputStream to stream the CSV to*/public StreamingCsvResultSetExtractor(final OutputStream os) {this.os = os;}@Overridepublic Void extractData(final ResultSet rs) {try (var pw = new PrintWriter(os, true)) {final var rsmd = rs.getMetaData();final var columnCount = rsmd.getColumnCount();writeHeader(rsmd, columnCount, pw);while (rs.next()) {for (var i = 1; i <= columnCount; i++) {final var value = rs.getObject(i);pw.write(value == null ? "" : value.toString());if (i != columnCount) {pw.append(DELIMITER);}}pw.println();}pw.flush();} catch (final SQLException e) {throw new RuntimeException(e);}return null;}private static void writeHeader(final ResultSetMetaData rsmd,final int columnCount, final PrintWriter pw) throws SQLException {for (var i = 1; i <= columnCount; i++) {pw.write(rsmd.getColumnName(i));if (i != columnCount) {pw.append(DELIMITER);}}pw.println();} }

要將其用于帶有JAX-RS的Web服務(wù)中:

import javax.ws.rs.core.StreamingOutput;@GET @Path("runQuery") @Produces("text/csv") public StreamingOutput runQuery() {return new StreamingOutput() {@Overridepublic void write(final OutputStream os)throws IOException, WebApplicationException {jdbcTemplate.query("select name, age from person",new StreamingCsvResultSetExtractor(os));}}; }

相關(guān)文章:

流式傳輸JDBC ResultSet作為JSON

翻譯自: https://www.javacodegeeks.com/2018/12/java-streaming-jdbc-resultset-csv.html

jdbc如何寫csv文件

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的jdbc如何写csv文件_Java:将JDBC结果集作为CSV流化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。