存储过程使用utl_file来读取,并用程序控制进行插入最好用sql lorder进行导入

解决方案 »

  1.   

    bzszp可以给我一个例子吗?
    sql lorder 导入没有办法在程序中执行。
      

  2.   

    写入文件的例子
    先修改或添加init.ora的UTL_FILE_DIR参数
    例如:
    utl_file_dir=G:\oracle\temp    //保存文本的路径为G:\oracle\temp
    此过程将用户FILE_OWNER的过程FILE_NAME的代码保存到G:\oracle\temp\TEXT.TXT中
    create or replace procedure PRO_TO_TXT(FILE_OWNER VARCHAR2,FILE_NAME VARCHAR2)
    is
       file_handle  utl_file.file_type;
       STOR_TEXT  VARCHAR2(4000);
       N NUMBER;
    I NUMBER;
    begin
    I:=1;
        SELECT MAX(LINE) INTO N FROM ALL_SOURCE WHERE OWNER=FILE_OWNER AND  NAME=FILE_NAME AND TYPE='PROCEDURE';
    file_handle:=utl_file.fopen('G:\oracle\temp','test.txt','a');
    utl_file.put_line(file_handle,'PROCEDURE NAME:'||FILE_NAME);
    WHILE I<=N LOOP
        SELECT TEXT  INTO STOR_TEXT FROM ALL_SOURCE WHERE OWNER=FILE_OWNER 
    AND NAME=FILE_NAME AND TYPE='PROCEDURE' AND LINE= I;
        I:=I+1;
        utl_file.put_line(file_handle,stor_text);
    END LOOP;
        utl_file.fclose(file_handle);
    commit;
    end PRO_TO_TXT;
    /看一下utl_file包的使用说明
      

  3.   

    bzszp 你给的例子好像是写入txt文件的,读txt文件添加表的应该如何写?
    使用tab分隔。
    恕我愚笨。
      

  4.   


    读取一行
    然后根据tab符将字符串分割(用到这两个函数substr(),instr())
    插入到表中具体的看utl_file包吧
      

  5.   

    1.定义控制文件,内容如:ctr.txt
    2.定义数据文件,内容如:data.txt(也就是你的那个数据文件)
    3.使用命令行  sqlldr 用户/口令@服务名 d:\ora\ctr.txt d:\ora\mm.log d:\ora\data.txt即可完成将数据文件中的数据装载到控制文件中所说的数据库表中!其中的:控制文件格式为:LOAD DATA
       INFILE 'd:\ora\data.TXT'
       APPEND
       INTO TABLE aaa (这个是表的名称)
       fields terminated by whitespace
       (aa     , 这些是字段
       bb     , 这些是字段
       cc   )    这些是字段
      

  6.   

    使用命令行  sqlldr 用户/口令@服务名 d:\ora\ctr.txt d:\ora\mm.log d:\ora\data.txt没有办法在程序中执行。