用存储过程实现,刚学不知道怎么做。
目的:将数据文件的内容,关联表得到其他相关数据后插入到数据库中数据文件一行是一条数据(数据条数不大在,在10万内),用逗号隔开:
刘菲,22,0615班,37205895
王宇,21,0616班,37205826
杨康,23,0617班,37205850
代表:姓名,年龄,班级,学号。我想把数据文件的数据插到临时表student_tmp(用delphi或JAVA插到临时表中)
然后用存储过程学号(如37205895)去关联表student取得学生的其他信息如:身份证号idcard、家庭住址address,性别sex。
然后将这样的数据插入到表student_bk中
刘菲,22,0615班,37205895,371326198825632121,北京市海淀区经典小区1号,女
王宇,21,0616班,37205826,371326198825632121,北京市海淀区经典小区2号,女
刘菲,23,0617班,37205850,371326198825632121,北京市海淀区经典小区3号,男

解决方案 »

  1.   

    为了方便测试全用VARCHAR2字段
    create table student_tmp

      s_name NUMBER(50),--姓名
      s_age  VARCHAR2(50),--年龄
      s_class VARCHAR2(50),--班级
      s_sno   VARCHAR2(50)--学号
    )  
    create table student

      s_sno   VARCHAR2(50),--学号
      idcard  VARCHAR2(50),--身份证号
      address VARCHAR2(50),--地址
      sex     VARCHAR2(50)--性别
    )
    create table student_bk
    (
      s_name NUMBER(50),--姓名
      s_age  VARCHAR2(50),--年龄
      s_class VARCHAR2(50),--班级
      s_sno   VARCHAR2(50),--学号
      idcard  VARCHAR2(50),--身份证号
      address VARCHAR2(50),--地址
      sex     VARCHAR2(50)--性别
    )
      

  2.   

    如果数据文件是 TXT 的 那么
    方法一:
    直接查询文本文件
    用 外部表
    CREATE TABLE city_populations_ext (
    city_name VARCHAR(9),
    pop_1990 NUMBER,
    pop_2000 NUMBER
    )
    ORGANIZATION EXTERNAL (
    TYPE oracle_loader
    DEFAULT DIRECTORY census_data
    ACCESS PARAMETERS (
    RECORDS FIXED 20
    LOGFILE census_data:
    'city_populations.log'
    BADFILE census_data:
    'city_populations.bad'
    FIELDS
    MISSING FIELD VALUES ARE NULL (
    city_name (1:10) CHAR(9),
    pop_1990 (11:15) INTEGER
    EXTERNAL(4),
    POP_2000 (16:20) INTEGER
    EXTERNAL(4)
    )
    )
    LOCATION ('city_populations.dat')
    )
    PARALLEL 4 REJECT LIMIT UNLIMITED;方法二:
    用 SQLLOADER 导入文本文件的数据到数据库中 然后查询
    http://www.yuanma.org/data/2006/0922/article_1573.htm
      

  3.   

    大哥 数据量不大的话 你就用 外部表吧可以把TXT文件当作表来查询的你 INSERT INTO TAB
       SELECT COL1....COLN FROM A ,B ON A.学号=B.学号  
      

  4.   

    文件是不是在客户端的啊
    那还不如先用程序把这个文件的内容导入到student_tmp
    然后再用insert插入到student_bk
      

  5.   

    为了方便测试全用VARCHAR2字段 
    create table student_tmp 

      s_name NUMBER(50),--姓名 
      s_age  VARCHAR2(50),--年龄 
      s_class VARCHAR2(50),--班级 
      s_sno  VARCHAR2(50)--学号 
    )  
    create table student 

      s_sno  VARCHAR2(50),--学号 
      idcard  VARCHAR2(50),--身份证号 
      address VARCHAR2(50),--地址 
      sex    VARCHAR2(50)--性别 

    create table student_bk 

      s_name NUMBER(50)…