首页 > 解决方案 > 如何将单词附加到文件中的一行而不移动到下一行-?

问题描述

我正在使用 UTL_FILE 从 .csv 文件中提取输出,并尝试将性别附加到已经存在的文件数据中。但是在我尝试的所有方法中,我都无法获得预期的输出。在这方面需要快速帮助。

实际文件(Details.csv):

Name,Country,State,City
Lina,Brazil,Bahia,Salvador
John,USA,Texas,Austin
Ashton,Australia,Tasmania,Hobart

我的输出:

Name,Country,State,City
,Gender
Lina,Brazil,Bahia,Salvador
,Female
John,USA,Texas,Austin
,Male
Ashton,Australia,Tasmania,Hobart
,Male

预期输出(Details_upd.csv):

Name,Country,State,City,Gender
Lina,Brazil,Bahia,Salvador,Female
John,USA,Texas,Austin,Male
Ashton,Australia,Tasmania,Hobart,Male

- - - 代码 - - - -

DECLARE

   f_line      VARCHAR2 (32767);

   file_1      UTL_FILE.file_type;
   file_2      UTL_FILE.file_type;

   f_dir       VARCHAR2 (25)  := 'DATA';

   L_check_UPDATED BOOLEAN;
   l_line VARCHAR2(32767);

BEGIN

   file_1 := UTL_FILE.fopen (f_dir,'Details.csv','R');

   file_2 := UTL_FILE.fopen (f_dir,'Details_upd.csv', 'W');

      UTL_FILE.get_line (file_1, f_line);

      l_line := trim(f_line);            

      UTL_FILE.PUT_LINE(file_2,l_line||','||'Gender');

   LOOP

      L_check_UPDATED := TRUE;

      /*--omitting the LOGIC part of code--*/   

        IF (L_check_UPDATED) THEN

        l_line := trim(f_line);

        UTL_FILE.PUT(file_2,l_line||',Male');

        ELSE

        l_line := trim(f_line);

        UTL_FILE.PUT_LINE(file_2,l_line||',Female');

        END IF;

   END LOOP;

   UTL_FILE.fclose (file_1);
   UTL_FILE.fclose (file_2);

END;

标签: sqloracleplsqlutl-file

解决方案


您将需要去掉使用 GET_LINE 读取的字符串末尾的换行符。尝试:

l_line := rtrim (f_line, ' ' || CHR (10) || CHR (13))

推荐阅读