黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java數據庫導出csv文件的代碼

Java數據庫導出csv文件的代碼

更新時間:2022-11-28 11:38:59 來源:動力節點 瀏覽6341次

將數據從數據庫導出到CSV文件任何軟件應用程序的是一項常見的任務。在這篇文章中,將指導你如何編寫Java代碼從數據庫讀取數據并寫入一個CSV文件。

這項技術是簡單的。我們使用JDBC來從數據庫讀取數據并使用文件I / O寫CSV文件。和底層數據庫的JDBC驅動程序庫是必要的(在這篇文章中使用MySQL)。

假設我們有一個表結構如下:

這個表包含一些數據是這樣的:

首先,您將學習如何編寫Java代碼來從這個表的數據導出到一個CSV文件。然后我將與你分享如何編寫,可重用的代碼,適用于任何表。

1. 簡單的Java代碼示例從數據庫導出到CSV文件

下面的代碼是一個簡單的Java程序,它連接到一個MySQL數據庫讀取從審查表的所有行,寫數據到一個CSV文件:

package net.codejava; 
import java.io.*;
import java.sql.*;
/**
 * A simple Java program that exports data from database to CSV file.
 * @author Nam Ha Minh
 * (C) Copyright codejava.net
 */
public class SimpleDb2CsvExporter { 
    public static void main(String[] args) {
        String jdbcURL = "jdbc:mysql://localhost:3306/sales";
        String username = "root";
        String password = "password";         
        String csvFilePath = "Reviews-export.csv";         
        try (Connection connection = DriverManager.getConnection(jdbcURL, username, password)) {
            String sql = "SELECT * FROM review";             
            Statement statement = connection.createStatement();             
            ResultSet result = statement.executeQuery(sql);             
            BufferedWriter fileWriter = new BufferedWriter(new FileWriter(csvFilePath));             
            // write header line containing column names       
            fileWriter.write("course_name,student_name,timestamp,rating,comment");             
            while (result.next()) {
                String courseName = result.getString("course_name");
                String studentName = result.getString("student_name");
                float rating = result.getFloat("rating");
                Timestamp timestamp = result.getTimestamp("timestamp");
                String comment = result.getString("comment");                 
                if (comment == null) {
                    comment = "";   // write empty value for null
                } else {
                    comment = "\"" + comment + "\""; // escape double quotes
                }                 
                String line = String.format("\"%s\",%s,%.1f,%s,%s",
                        courseName, studentName, rating, timestamp, comment);                 
                fileWriter.newLine();
                fileWriter.write(line);            
            }            
            statement.close();
            fileWriter.close();            
        } catch (SQLException e) {
            System.out.println("Datababse error:");
            e.printStackTrace();
        } catch (IOException e) {
            System.out.println("File IO error:");
            e.printStackTrace();
       }         
    } 
}

正如你所看到的在這個程序中,它是寫為一個特定的表的列的名稱是已知的。運行這個程序,你會看到Reviews-export。生成csv文件包含以下內容:

注意ID字段的值是不出口。一些列的值放在雙引號是仍然有效,如果文本包含逗號。

2. 先進的Java代碼從數據庫導出到CSV文件示例

讓我們看一下如何編寫一個更通用的程序,可以使用任何表。以下是完整的程序代碼:

package net.codejava;
import java.io.*;
import java.sql.*;
import java.text.*;
import java.util.*; 
/**
 * An advanced Java program that exports data from any table to CSV file.
 * @author Nam Ha Minh
 * (C) Copyright codejava.net
 */
public class AdvancedDb2CsvExporter {
    private BufferedWriter fileWriter;     
    public void export(String table) {
        String jdbcURL = "jdbc:mysql://localhost:3306/sales";
        String username = "root";
        String password = "password";         
        String csvFileName = getFileName(table.concat("_Export"));         
        try (Connection connection = DriverManager.getConnection(jdbcURL, username, password)) {
            String sql = "SELECT * FROM ".concat(table);             
            Statement statement = connection.createStatement();             
            ResultSet result = statement.executeQuery(sql);             
            fileWriter = new BufferedWriter(new FileWriter(csvFileName));             
            int columnCount = writeHeaderLine(result);             
            while (result.next()) {
                String line = "";                 
                for (int i = 2; i <= columnCount; i++) {
                    Object valueObject = result.getObject(i);
                    String valueString = "";                     
                    if (valueObject != null) valueString = valueObject.toString();                     
                    if (valueObject instanceof String) {
                        valueString = "\"" + escapeDoubleQuotes(valueString) + "\"";
                    }                     
                    line = line.concat(valueString);                     
                    if (i != columnCount) {
                        line = line.concat(",");
                    }
                }                 
                fileWriter.newLine();
                fileWriter.write(line);            
            }             
            statement.close();
            fileWriter.close();             
        } catch (SQLException e) {
            System.out.println("Datababse error:");
            e.printStackTrace();
        } catch (IOException e) {
            System.out.println("File IO error:");
            e.printStackTrace();
        }         
    } 
    private String getFileName(String baseName) {
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
        String dateTimeInfo = dateFormat.format(new Date());
        return baseName.concat(String.format("_%s.csv", dateTimeInfo));
    }     
    private int writeHeaderLine(ResultSet result) throws SQLException, IOException {
        // write header line containing column names
        ResultSetMetaData metaData = result.getMetaData();
        int numberOfColumns = metaData.getColumnCount();
        String headerLine = "";         
        // exclude the first column which is the ID field
        for (int i = 2; i <= numberOfColumns; i++) {
            String columnName = metaData.getColumnName(i);
            headerLine = headerLine.concat(columnName).concat(",");
        }         
        fileWriter.write(headerLine.substring(0, headerLine.length() - 1));         
        return numberOfColumns;
    }     
    private String escapeDoubleQuotes(String value) {
        return value.replaceAll("\"", "\"\"");
    }     
    public static void main(String[] args) {
        AdvancedDb2CsvExporter exporter = new AdvancedDb2CsvExporter();
        exporter.export("review");
        exporter.export("product");
    }  
}

你通過表名出口()方法,它所有的工作。CSV文件的名字是生成基于表名,其次是_Export和當前日期時間:

String csvFileName = getFileName(table.concat("_Export"));

getFileName()方法編寫如下:

private String getFileName(String baseName) {
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
    String dateTimeInfo = dateFormat.format(new Date());
    return baseName.concat(String.format("_%s.csv", dateTimeInfo));
}

如果評審表名,那么CSV文件的名稱將review_export_2019 - 10 - 14 - _20 52 - 55. CSV。時間戳添加到CSV文件名稱將用于最終用戶將能夠區分每個數據導出。

writeHeaderLine()方法編寫列名在CSV文件的第一行。它使用ResultSetMetaData列的名稱——這意味著它可以處理任何表。

注意,程序不出口ID列的值(它應該是總是第一列)。

然后您可以使用該程序從任何您希望的表導出數據,如下:

AdvancedDb2CsvExporter exporter = new AdvancedDb2CsvExporter();
exporter.export("review");
exporter.export("product");

以上就是關于“Java數據庫導出csv文件的代碼”介紹,大家如果想了解更多相關知識,不妨來關注一下本站的Java視頻教程,里面的課程內容從入門到精通,細致全面,通俗易懂,很適合沒有基礎的小伙伴學習,希望對大家能夠有所幫助。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 在线观看午夜视频 | 日韩视频在线播放 | 动漫成年美女黄漫网站小视频 | 亚洲国产日韩在线观看 | 亚洲福利视频一区二区 | 最近最新中文字幕免费高清1 | 成人在线免费视频观看 | 国产一区二区三区四 | 嫩草影院永久在线一二三四 | 天天草视频 | 欧美激情在线精品video | 男无遮挡吃奶gift动态图 | 天堂资源地址在线 | 中文字幕免费在线视频 | 欧美一区二区三区精品影视 | 伊人网伊人 | 久操社区 | 欧美日韩亚洲国产精品 | 国产人碰人摸人爱免费视频 | 欧美成人欧美激情欧美风情 | 欧美成人性生活片 | 99热亚洲| 任我鲁这里有精品视频在线播 | 亚洲伦理剧 | 久一视频在线观看 | 一级黄色片中国 | 中文天堂在线最新2022更新 | 久久久免费的精品 | igao在线视频成人免费 | 男男1v1高h猛烈做哭bl强制 | 在线观看亚洲一区 | 中国一及黄色片 | 亚洲一区欧美 | 免费黄色小视频在线观看 | 欧美日韩亚洲m码色帝国 | 成人性色生活片免费看成人性 | 国产特黄特色a级在线视频 国产特黄特色a级在线视 | 中文字幕高清免费不卡视频 | 尼龙丝袜社区aaaaa视频 | 狠狠操2018 | 黄色大片一级 |