大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) Java數(shù)據(jù)庫導(dǎo)出csv文件的代碼

Java數(shù)據(jù)庫導(dǎo)出csv文件的代碼

更新時間:2022-11-28 11:38:59 來源:動力節(jié)點(diǎn) 瀏覽6199次

將數(shù)據(jù)從數(shù)據(jù)庫導(dǎo)出到CSV文件任何軟件應(yīng)用程序的是一項(xiàng)常見的任務(wù)。在這篇文章中,將指導(dǎo)你如何編寫Java代碼從數(shù)據(jù)庫讀取數(shù)據(jù)并寫入一個CSV文件。

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

假設(shè)我們有一個表結(jié)構(gòu)如下:

這個表包含一些數(shù)據(jù)是這樣的:

首先,您將學(xué)習(xí)如何編寫Java代碼來從這個表的數(shù)據(jù)導(dǎo)出到一個CSV文件。然后我將與你分享如何編寫,可重用的代碼,適用于任何表。

1. 簡單的Java代碼示例從數(shù)據(jù)庫導(dǎo)出到CSV文件

下面的代碼是一個簡單的Java程序,它連接到一個MySQL數(shù)據(jù)庫讀取從審查表的所有行,寫數(shù)據(jù)到一個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();
       }         
    } 
}

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

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

2. 先進(jìn)的Java代碼從數(shù)據(jù)庫導(dǎo)出到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和當(dāng)前日期時間:

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文件名稱將用于最終用戶將能夠區(qū)分每個數(shù)據(jù)導(dǎo)出。

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

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

然后您可以使用該程序從任何您希望的表導(dǎo)出數(shù)據(jù),如下:

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

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

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 99久久99久久精品免费看蜜桃 | 五月天在线免费视频 | 奇米在线视频 | 国产色综合天天综合网 | 青草青视频在线观看 | 欧美色成人综合 | 九九久久久 | 99久久99久久精品免费看子 | 国产精品久久久久无毒 | 国产一区二区三区日韩 | 91精品视频在线播放 | 久久亚洲私人国产精品 | 日韩成人精品视频 | 看免费黄色一级视频 | 干干干操操操 | 亚洲一区 中文字幕 | 日韩精品一区二区三区 在线观看 | 国产精品自拍亚洲 | 五月一区二区久久综合天堂 | 久草在线中文 | 无码免费一区二区三区免费播放 | 99在线国产视频 | 最近免费中文字幕大全免费版视频 | 久久天天躁狠狠躁夜夜爽 | 伊人久久成人爱综合网 | 国产精品久久久久鬼色 | 日本色色网 | 香蕉久久夜色精品国产小说 | 久操社区 | 伦伦影院精品一区 | 四虎国产视频 | 老外黑人欧美一级毛片 | 久久久久久一级毛片免费无遮挡 | 第一福利视频网 | 成人影院在线免费观看 | aaa毛片视频免费观看 | 四虎免费永久网站入口 | 国产成人亚洲综合欧美一部 | www.五月天激情 | 欧美aaaa在线观看视频免费 | 免费大片黄在线观看yw |