您的位置:首页 > 数据库 > Oracle

如何将一个文本文件中的数据加载到oracle数据库中

2015-04-07 08:47 316 查看
先说下这个题是怎么样的.有一张表学生信息表studentinfo,有学号,姓名,班级号,电话,住址字段.然后表结构已经告诉了.现在有一个数据文件,假设叫studentdata.txt,里面有很多行数据,每行数据都是一个学生信息,每个字段用"|"隔开.要求将这个数据文件加载到学生信息表中. 

    1.先说下我用java怎么做的. 

        a.生成一个文件流 

        FileInputStream studentInputStream=new FileInputStream("studentdata.txt"); 

        b.封装到一个BufferReader中去 

        BufferReader studentBfreader=new BufferReader(new InputStreanReader(studentInputStream)) 

        c.设定一个循环,然后通过BufferReader去读取文件中的一行.在循环中将数据写入数据库.    

        同时要获取数据库连接,生成一个preparedStatement 

        PreparedStatement pstmt = con.prepareStatement("insert into studentinfo(num,name,classnum,tel,address) values(?,?,?,?,?)"); 

        String student_=null 

        while((student_=studentBfreader.readLine()!=null){ 

                String[] studentInfoArray=student_.split("|"); 

                pstmt.setString(1,studentInfoArray[0]); 

                ... 

                pstmt.excute(); 

            } 

    很明显,写java程序比较麻烦.然后咱们再看第二种方式--通过数据库工具. 

    2.Oracle中的sql loader 

    oracle 的sql loader用来将操作系统上的数据文件中的内容加载到oracle数据库中. 

    要使用sql loader,需要先创建一个控制文件,里面告诉sql loader在启动了sql loader之后的加载数据的策略. 

    新建一个studentdataload.ctl文件,写入 

    load data 

    infile 'studentdata.txt' 

    into table studentinfo 

    fields terminated by '|' 

    (num,name,classnum,tel,address)

    然后在控制台启动sql loader,写入用户名密码(加载数据用),以及控制文件名. 

    sqlldr userid=username/password@serviceName control=studentdata.ctl 

    使用sql loader 方法就简单多了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: