csv文件是这样的~
0001,1001,1
0002,1002,0
0003,1003,1
0004,1004,2
0005,1005,0
0006,1006,2
0007,1007,1
pl/sql 改如何读取啊~~~
 

解决方案 »

  1.   

    可以用sqlload 读取也可以直接用plsql/dev  导入数据库    工具--文本导入---当然直接一列一列的复制也是可以的
      

  2.   

    在PROCEDURE里 读取~
    不用工具~
    我想知怎么写代码~
      

  3.   

    包utl_file,自己读数据,然后根据文件内容作处理.
      

  4.   

    参考导入导出XML的文章http://blog.csdn.net/java3344520/archive/2010/06/14/5670809.aspx
    做法类似
      

  5.   

    首先,创建表
    其次,创建一个ctl文件,文件内容如下:
    load data               --控制文件标识
    infile 'f:\stu.txt'     --导入原文件
    append into table s_user --向表中追加记录(insert(默认)、append、replace)
    fields terminated by X'09' --字段分隔符(tab)
    (pname,pbirth date "YYYY-MM-DD",psex)--导入对应字段及字段类型 最后,在dos下,使用sqlldr
    Sqlldr chao/ok@qx control=f:/test.ctl  log=f:\test.log
      

  6.   

    1、修改系统参数utl_file_dir,指向你服务器存储csv文件的目录。
    sql>alter system set utl_file_dir='c:\temp' scope=spfile;2、重启数据库使参数生效。3、生成一个测试的文件test.csv,放入服务器c:\temp,文件内容如下:
    1,zhang shan
    2,li shi
    3,wang wu4、创建一个存储csv数据的表testcsv。
    sql>create table testcsv(id number,name varchar2(20));5、创建一存储过程readcsv
    CREATE OR REPLACE PROCEDURE readcsv(i_filename VARCHAR2) IS
      f   utl_file.file_type;
      buf VARCHAR2(200);
      v_id pls_integer;
      v_name varchar2(20);  FUNCTION getStrByPos(i_str VARCHAR2, i_pos PLS_INTEGER) RETURN VARCHAR2 IS
        item VARCHAR2(200);
        str  VARCHAR2(200);
      BEGIN
        str := ',' || i_str || ',';
        FOR i IN 1 .. length(str) - length(REPLACE(str, ',')) - 1 LOOP
          item := substr(str,
                         instr(str, ',', 1, i) + 1,
                         instr(str, ',', 1, i + 1) - instr(str, ',', 1, i) - 1);
          EXIT WHEN i = i_pos;
        END LOOP;
        RETURN item;
      END;
    BEGIN
      f := utl_file.fopen('c:\temp', i_filename, 'R');
      LOOP
        BEGIN
          utl_file.get_line(f, buf);
          v_id := getStrByPos(buf, 1);
          v_name := getStrByPos(buf, 2);
          INSERT INTO testcsv VALUES (v_id, v_name);
        EXCEPTION
          WHEN no_data_found THEN
            EXIT;
        END;
      END LOOP;
      COMMIT;
      utl_file.fclose(f);
    END;6、执行存储过程
    sql>execute readcsv('test.csv');