国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Java > 正文

Java實(shí)現(xiàn)從數(shù)據(jù)庫(kù)導(dǎo)出大量數(shù)據(jù)記錄并保存到文件的方法

2019-11-26 14:53:09
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文實(shí)例講述了Java實(shí)現(xiàn)從數(shù)據(jù)庫(kù)導(dǎo)出大量數(shù)據(jù)記錄并保存到文件的方法。分享給大家供大家參考,具體如下:

數(shù)據(jù)庫(kù)腳本:

-- Table "t_test" DDLCREATE TABLE `t_test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) DEFAULT NULL, `createTime` bigint(20) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

代碼:

package com.yanek.test; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.OutputStreamWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class TestDB {  public static void main(String[] args) {   Test(); // 生成測(cè)試數(shù)據(jù)   //Exp();   //Exp(0);   //System.out.println(readText("/opt/id.txt"));  }  /**   * 導(dǎo)出數(shù)據(jù)   */   public static void Exp() {    Connection Conn=null;    try {     Class.forName("com.mysql.jdbc.Driver").newInstance();     String jdbcUrl = "jdbc:mysql://127.0.0.1:3306/testcms?characterEncoding=GBK";     String jdbcUsername = "root";     String jdbcPassword = "root";     Conn = DriverManager.getConnection(jdbcUrl, jdbcUsername, jdbcPassword);     System.out.println("conn"+Conn);     Exp(Conn);    } catch (SQLException e) {     e.printStackTrace();    }    catch (InstantiationException e) {     // TODO Auto-generated catch block     e.printStackTrace();    } catch (IllegalAccessException e) {     // TODO Auto-generated catch block     e.printStackTrace();    } catch (ClassNotFoundException e) {     // TODO Auto-generated catch block     e.printStackTrace();    }    finally    {     try {      Conn.close();     } catch (SQLException e) {      // TODO Auto-generated catch block      e.printStackTrace();     }    }   }   public static void Exp(int startid) {    Connection Conn=null;    try {     Class.forName("com.mysql.jdbc.Driver").newInstance();     String jdbcUrl = "jdbc:mysql://127.0.0.1:3306/testcms?characterEncoding=GBK";     String jdbcUsername = "root";     String jdbcPassword = "root";     Conn = DriverManager.getConnection(jdbcUrl, jdbcUsername, jdbcPassword);     System.out.println("conn"+Conn);     Exp(Conn,startid);    } catch (SQLException e) {     e.printStackTrace();    }    catch (InstantiationException e) {     // TODO Auto-generated catch block     e.printStackTrace();    } catch (IllegalAccessException e) {     // TODO Auto-generated catch block     e.printStackTrace();    } catch (ClassNotFoundException e) {     // TODO Auto-generated catch block     e.printStackTrace();    }    finally    {     try {      Conn.close();     } catch (SQLException e) {      // TODO Auto-generated catch block      e.printStackTrace();     }    }   }   /**   * 導(dǎo)出從startid開(kāi)始的數(shù)據(jù)   * @param conn   * @param start_id   */   public static void Exp(Connection conn,int start_id) {    int counter = 0;    int startid=start_id;    boolean flag = true;    while (flag) {     flag = false;     String Sql = "SELECT * FROM t_test WHERE id>"       + startid + " order by id asc LIMIT 50";     System.out.println("sql===" + Sql);     try {      Statement stmt = conn.createStatement();      ResultSet rs = stmt.executeQuery(Sql);       while (rs.next()) {        flag = true;        int id = rs.getInt("id");        String title = rs.getString("title");        startid = id ;        counter++;        writeContent(counter+"--id--"+id+"--title-"+title+"/r/n", "/opt/","log.txt",true);        System.out.println("i="+counter+"--id--"+id+"--title-"+title);       }      rs.close();      stmt.close();     } catch (SQLException e) {      e.printStackTrace();     }    }    writeContent(""+startid, "/opt/","id.txt",false);   }   /**   * 導(dǎo)出一小時(shí)內(nèi)的數(shù)據(jù)   * @param conn   */   public static void Exp(Connection conn) {    int counter = 0;    //一小時(shí)內(nèi)的數(shù)據(jù)    Long timestamp = System.currentTimeMillis() - (60 * 60 * 1000);    boolean flag = true;    while (flag) {     flag = false;     String Sql = "SELECT * FROM t_test WHERE createTime>"       + timestamp + " LIMIT 50";     System.out.println("sql===" + Sql);     try {      Statement stmt = conn.createStatement();      ResultSet rs = stmt.executeQuery(Sql);      while (rs.next()) {       flag = true;       int id = rs.getInt("id");       String title = rs.getString("title");       Long lastmodifytime = rs.getLong("createTime");       timestamp = lastmodifytime;       counter++;       System.out.println("i="+counter+"--id--"+id+"--title-"+title);      }      rs.close();      stmt.close();     } catch (SQLException e) {      e.printStackTrace();     }    }   }   public static void Test() {    Connection Conn=null;    try {     Class.forName("com.mysql.jdbc.Driver").newInstance();     String jdbcUrl = "jdbc:mysql://127.0.0.1:3306/testcms?characterEncoding=GBK";     String jdbcUsername = "root";     String jdbcPassword = "root";     Conn = DriverManager.getConnection(jdbcUrl, jdbcUsername, jdbcPassword);     System.out.println("conn"+Conn);     for(int i=1;i<=10000;i++)     {      add(Conn,"testTitle"+i+"-"+System.currentTimeMillis());     }    } catch (SQLException e) {     e.printStackTrace();    }    catch (InstantiationException e) {     // TODO Auto-generated catch block     e.printStackTrace();    } catch (IllegalAccessException e) {     // TODO Auto-generated catch block     e.printStackTrace();    } catch (ClassNotFoundException e) {     // TODO Auto-generated catch block     e.printStackTrace();    }    finally    {     try {      Conn.close();     } catch (SQLException e) {      // TODO Auto-generated catch block      e.printStackTrace();     }    }   }   public static void add(Connection conn,String title)   {    PreparedStatement pstmt = null;    String insert_sql = "insert into t_test(title,createTime) values (?,?)";    System.out.println("sql="+insert_sql);    try {     pstmt = conn.prepareStatement(insert_sql);     pstmt.setString(1,title);     pstmt.setLong(2,System.currentTimeMillis());     int ret = pstmt.executeUpdate();    } catch (SQLException e) {     // TODO Auto-generated catch block     e.printStackTrace();    }    finally{     try {      pstmt.close();     } catch (SQLException e) {      // TODO Auto-generated catch block      e.printStackTrace();     }     }   }   /**    * 寫入內(nèi)容到文件    *    * @param number    * @param filename    * @return    */   public static boolean writeContent(String c, String dirname,String filename,boolean isAppend) {    File f=new File(dirname);    if (!f.exists())    {      f.mkdirs();    }    try {     FileOutputStream fos = new FileOutputStream( dirname+File.separator+filename,isAppend);     OutputStreamWriter writer = new OutputStreamWriter(fos);     writer.write(c);     writer.close();     fos.close();    } catch (IOException e) {     e.printStackTrace();     return false;    }    return true;   }   /**    * 從文件讀取內(nèi)容    *    * @param filename    * @return    */   public static String readText(String filename) {    String content = "";    try {     File file = new File(filename);     if (file.exists()) {      FileReader fr = new FileReader(file);      BufferedReader br = new BufferedReader(fr);      String str = "";      String newline = "";      while ((str = br.readLine()) != null) {       content += newline + str;       newline = "/n";      }      br.close();      fr.close();     }    } catch (IOException e) {     e.printStackTrace();    }    return content;   } } 

基本思想: 就是通過(guò)記錄開(kāi)始記錄id,執(zhí)行多次sql來(lái)處理. 由于大數(shù)據(jù)量所以不能使用一條sql語(yǔ)句來(lái)輸出.否則會(huì)內(nèi)存不足導(dǎo)致錯(cuò)誤.

主要用途: 可以使用在做接口開(kāi)發(fā)時(shí),給第三方提供數(shù)據(jù)增量輸出的場(chǎng)景使用.

希望本文所述對(duì)大家Java程序設(shè)計(jì)有所幫助。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 临邑县| 通许县| 巨野县| 都兰县| 赞皇县| 蓬溪县| 绍兴县| 三亚市| 武强县| 阳东县| 聂荣县| 延庆县| 金秀| 盐津县| 抚顺县| 密云县| 中江县| 诸城市| 辉南县| 巫山县| 克拉玛依市| 梧州市| 鹿泉市| 昌乐县| 遂平县| 萨嘎县| 元朗区| 礼泉县| 远安县| 云和县| 鄂伦春自治旗| 东方市| 龙岩市| 唐海县| 英山县| 沙湾县| 酉阳| 阿荣旗| 泽州县| 定襄县| 深泽县|