Java处理csv文件

Java处理csv文件
5人收藏此文章, 我要收藏 发表于9个月前(2012-08-09 20:34) , 已有433次阅读 ,共0个评论
背景:

        做数据订正的时候,需要对查询出的一批数据进行批量的复杂操作,存储过程需要审批嫌麻烦,这里采用一个main函数将 csv 中的数据进行 sql 拼接。

        第一步:下载Java操作 CSV 的类库,http://ostermiller.org/utils/download.html

        第二步:配置log4j,输出sql到日志文件

01
log4j.rootLogger=CONSOLE,FILE
02
log4j.addivity.org.apache=true
03

04
# 应用于控制台
05
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
06
log4j.appender.CONSOLE.Threshold=INFO
07
log4j.appender.CONSOLE.Target=System.out
08
log4j.appender.CONSOLE.Encoding=GBK
09
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
10
log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
11

12
#应用于文件
13
log4j.appender.FILE=org.apache.log4j.FileAppender
14
log4j.appender.FILE.File=C:/sqlresult.log
15
log4j.appender.FILE.Append=false
16
log4j.appender.FILE.Encoding=GBK
17
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
      

        第三步:MainCVS程序

01
package coffee;
02

03
import java.io.FileInputStream;
04
import java.io.IOException;
05

06
import org.apache.log4j.Logger;
07

08
import com.Ostermiller.util.ExcelCSVParser;
09
import com.Ostermiller.util.LabeledCSVParser;
10

11
/**
12
* 通过cvs文件生成SQL文件
13
*
14
* @author lee.ll 2012-8-9 下午2:19:41
15
*/
16
public class MainCSV {
17

18
    private static Logger    log         = Logger.getLogger(MainCSV.class.getName());
19

20
    // csv解析器,对于第一行的表头信息,自动加载为索引关键字
21
    private LabeledCSVParser csvParser;
22
    // 文件所读到行数
23
    private int              currLineNum = -1;
24
    // 用来存放当前行的数据
25
    private String[]         currLine    = null;
26

27
    // 构造函数
28
    protected MainCSV(String filePath) throws IOException{
29
        csvParser = new LabeledCSVParser(new ExcelCSVParser(new FileInputStream(filePath)));
30
        currLineNum = csvParser.getLastLineNumber();
31
    }
32

33
    // 检查是否还有数据 return ture 还有一行数据,false 没有数据
34
    public boolean hasMore() throws IOException {
35
        currLine = csvParser.getLine();
36
        currLineNum = csvParser.getLastLineNumber();
37
        if (null == currLine) return false;
38
        return true;
39
    }
40

41
    // 返回当前行数据,关键字所指向的数据 param:String filedName 该行的表头 return:String 返回当前行数据,关键字所指向的数据
42
    public String getByFieldName(String fieldName) {
43
        return csvParser.getValueByLabel(fieldName);
44
    }
45

46
    // 关闭解析器
47
    public void close() throws IOException {
48
        csvParser.close();
49
    }
50

51
    // 读取当前行数据 return String[] 读取当前行数据
52
    public String[] readLine() throws IOException {
53
        currLine = csvParser.getLine();
54
        currLineNum = csvParser.getLastLineNumber();
55
        return currLine;
56
    }
57

58
    public int getCurrLineNum() {
59
        return currLineNum;
60
    }
61

62
    public static void main(String[] args) {
63
        try {
64
            // 实例解析器CsvFileParser
65
            MainCSV parser = new MainCSV("C:\\sqlresult.csv");
66

67
            // 读取数据
68
            while (parser.hasMore()) {
69
                String updateSql = "update table set column1" + parser.getByFieldName("column1") + "), column2"
70
                                   + parser.getByFieldName("column2") + ";";
71

72
                log.info(updateSql);
73
            }
74

75
            parser.close();
76

77
            System.out.println("处理完毕!");
78
        } catch (Exception e) {
79
            System.out.println("处理失败!!!");
80
        }
81
    }
82

83
}
        我这里是将拼接好的 sql 输出到日志 C:/sqlresult.log

你可能感兴趣的:(java)