zoukankan      html  css  js  c++  java
  • 如何将一个文本文件中的数据加载到oracle数据库中

        这个是今天去软通动力面试时候碰到的.当时虽然知道是通过数据库提供的某种工具实现的,但因为先前没用过,所以不知道怎么弄.后面就采用了java程序方法.
        先说下这个题是怎么样的.有一张表学生信息表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 方法就简单多了.

  • 相关阅读:
    return和exit以及C语言递归函数
    一个C语言外挂程序
    thinkphp查询构造器和链式操作、事务
    thinkphp一般数据库操作
    thinkphp上传图片
    thinkphp类型转换
    解决索引中碎片的问题
    SQL SERVER中非聚集索引的覆盖,连接,交叉,过滤
    兼容IE的CSS的”引入方式“
    CSS之display:block与display:inline-block
  • 原文地址:https://www.cnblogs.com/leipei2352/p/2143715.html
Copyright © 2011-2022 走看看