Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

How to append a header on the top of the CSV file

buggleboy007Apr 21 2022

Hi all,
I am trying to append a string (aka header) in a CSV file that has data. While the string is getting appended it is appending at the bottom. Is there a way to have it on the 1st line itself. The reason for this having it on 1st line I will then be able to do further validations.
Here is the file (before appending the text):

66032180,1,8/7/2021 11:58:00 PM,1530,1.54E+15,Purchase,200740,46628234,Visa,1,27,Approved,6.60E+17,hpp1628395039b4ICQGM,6.60E+17
66032180,1,8/12/2021 3:34:00 PM,1530,4.30E+15,Purchase,36317,45144565,Visa,1,27,Approved,6.60E+17,hpp1628796818kljGQT9,6.60E+17
66032180,1,8/12/2021 10:40:00 PM,1530,7.13E+15,Purchase,282624,37673000,Amex,1,27,Approved,6.60E+17,hpp1628822340RZkav8n,6.60E+17
66032180,1,8/24/2021 8:30:00 PM,1530,2.29E+15,Purchase,01340Z,51918734,MC,1,27,Approved,6.60E+17,hpp1629851399t7h4Zoz,6.60E+17
66032180,1,8/28/2021 2:28:00 PM,1530,6.26E+15,Purchase,676900,52898843,MC,1,27,Approved,6.60E+17,hpp1630175205p6diDD6,6.60E+17
66032180,1,8/5/2021 10:26:00 AM,1530,1.25E+15,Purchase,90010,46469799,Visa,1,27,Approved,6.60E+17,hpp1628173517Yregb53,6.60E+17
66032180,1,8/9/2021 12:35:00 PM,1530,2.06E+15,Purchase,48077,49024436,Visa,1,27,Approved,6.60E+17,hpp1628526833XcAwaqw,6.60E+17
66032180,1,8/5/2021 9:59:00 PM,1530,5.56E+15,Purchase,07467J,54462263,MC,1,27,Approved,6.60E+17,hpp1628214979SKftQnC,6.60E+17
66032180,1,8/16/2021 10:33:00 AM,1530,7.46E+15,Purchase,195338,43507725,Visa,1,27,Approved,6.60E+17,hpp16291244015GFEqze,6.60E+17
66032180,1,8/12/2021 10:14:00 PM,1530,2.09E+15,Purchase,744023,51207019,MC,1,27,Approved,6.60E+17,hpp16288205574H62FRN,6.60E+17
66032180,1,8/5/2021 3:21:00 PM,1530,8.18E+15,Purchase,152144,55836386,MC,1,27,Approved,6.60E+17,hpp162819125070VQevG,6.60E+17
66032180,1,8/6/2021 1:51:00 PM,1530,7.16E+15,Purchase,703344,40335737,Visa,1,27,Approved,6.60E+17,hpp1628272202nElKZ6g,6.60E+17
66032180,1,8/9/2021 11:28:00 PM,1530,2.61E+14,Purchase,613678,45526402,Visa,1,27,Approved,6.60E+17,hpp1628566038zfD6DgY,6.60E+17
66032180,1,8/10/2021 1:17:00 AM,1530,6.43E+15,Purchase,02328Z,54156592,MC,1,27,Approved,6.60E+17,hpp1628572617X0KLlI6,6.60E+17
66032180,1,8/10/2021 3:09:00 AM,1530,5.08E+13,Purchase,135633,41356666,Visa,1,27,Approved,6.60E+17,hpp1628579170QEQToCN,6.60E+17
66032180,1,8/18/2021 11:46:00 AM,1530,9.44E+15,Purchase,68224,51865074,MC,1,27,Approved,6.60E+17,hpp1629301487CERPrKv,6.60E+17
66032180,1,8/11/2021 12:54:00 PM,1530,8.52E+15,Purchase,02685C,46400169,Visa,1,27,Approved,6.60E+17,hpp1628700784RMd7pvb,6.60E+17
66032180,1,8/17/2021 5:20:00 PM,1530,1.19E+15,Purchase,01213I,45209219,Visa,1,27,Approved,6.60E+17,hpp1629235178LrR8ucr,6.60E+17

This is the header that I am trying to add:

TERMINAL_ID,BATCH_NUMBER,DATE_TIME,ORDER_ID,TRANSACTION_TYPE,CARD,CARD_NUMBER,AUTHORISATION_CODE,ISO_CODE,RESPONSE_CODE,RESULT,REFERENCE_NUMBER,CUSTOMER_ID,TRANSACTION_NUMBER,SYSTEM_ID,DETAIL_CODE,MCGILL_ID,TERM_CODE,TRANS_DATE,PAYMENT_ID,AMOUNT,APPROVAL_CODE,TRANS_AMT,ORDER_NUMBER,TYPE_IND,DR_CR_IND,DESCRIPTION,TYPE

Here is how it looks (after appending the text):

66032180,1,8/7/2021 11:58:00 PM,1530,1.54E+15,Purchase,200740,46628234,Visa,1,27,Approved,6.60E+17,hpp1628395039b4ICQGM,6.60E+17
66032180,1,8/12/2021 3:34:00 PM,1530,4.30E+15,Purchase,36317,45144565,Visa,1,27,Approved,6.60E+17,hpp1628796818kljGQT9,6.60E+17
66032180,1,8/12/2021 10:40:00 PM,1530,7.13E+15,Purchase,282624,37673000,Amex,1,27,Approved,6.60E+17,hpp1628822340RZkav8n,6.60E+17
66032180,1,8/24/2021 8:30:00 PM,1530,2.29E+15,Purchase,01340Z,51918734,MC,1,27,Approved,6.60E+17,hpp1629851399t7h4Zoz,6.60E+17
66032180,1,8/28/2021 2:28:00 PM,1530,6.26E+15,Purchase,676900,52898843,MC,1,27,Approved,6.60E+17,hpp1630175205p6diDD6,6.60E+17
66032180,1,8/5/2021 10:26:00 AM,1530,1.25E+15,Purchase,90010,46469799,Visa,1,27,Approved,6.60E+17,hpp1628173517Yregb53,6.60E+17
66032180,1,8/9/2021 12:35:00 PM,1530,2.06E+15,Purchase,48077,49024436,Visa,1,27,Approved,6.60E+17,hpp1628526833XcAwaqw,6.60E+17
66032180,1,8/5/2021 9:59:00 PM,1530,5.56E+15,Purchase,07467J,54462263,MC,1,27,Approved,6.60E+17,hpp1628214979SKftQnC,6.60E+17
66032180,1,8/16/2021 10:33:00 AM,1530,7.46E+15,Purchase,195338,43507725,Visa,1,27,Approved,6.60E+17,hpp16291244015GFEqze,6.60E+17
66032180,1,8/12/2021 10:14:00 PM,1530,2.09E+15,Purchase,744023,51207019,MC,1,27,Approved,6.60E+17,hpp16288205574H62FRN,6.60E+17
66032180,1,8/5/2021 3:21:00 PM,1530,8.18E+15,Purchase,152144,55836386,MC,1,27,Approved,6.60E+17,hpp162819125070VQevG,6.60E+17
66032180,1,8/6/2021 1:51:00 PM,1530,7.16E+15,Purchase,703344,40335737,Visa,1,27,Approved,6.60E+17,hpp1628272202nElKZ6g,6.60E+17
66032180,1,8/9/2021 11:28:00 PM,1530,2.61E+14,Purchase,613678,45526402,Visa,1,27,Approved,6.60E+17,hpp1628566038zfD6DgY,6.60E+17
66032180,1,8/10/2021 1:17:00 AM,1530,6.43E+15,Purchase,02328Z,54156592,MC,1,27,Approved,6.60E+17,hpp1628572617X0KLlI6,6.60E+17
66032180,1,8/10/2021 3:09:00 AM,1530,5.08E+13,Purchase,135633,41356666,Visa,1,27,Approved,6.60E+17,hpp1628579170QEQToCN,6.60E+17
66032180,1,8/18/2021 11:46:00 AM,1530,9.44E+15,Purchase,68224,51865074,MC,1,27,Approved,6.60E+17,hpp1629301487CERPrKv,6.60E+17
66032180,1,8/11/2021 12:54:00 PM,1530,8.52E+15,Purchase,02685C,46400169,Visa,1,27,Approved,6.60E+17,hpp1628700784RMd7pvb,6.60E+17
66032180,1,8/17/2021 5:20:00 PM,1530,1.19E+15,Purchase,01213I,45209219,Visa,1,27,Approved,6.60E+17,hpp1629235178LrR8ucr,6.60E+17
TERMINAL_ID,BATCH_NUMBER,DATE_TIME,ORDER_ID,TRANSACTION_TYPE,CARD,CARD_NUMBER,AUTHORISATION_CODE,ISO_CODE,RESPONSE_CODE,RESULT,REFERENCE_NUMBER,CUSTOMER_ID,TRANSACTION_NUMBER,SYSTEM_ID,DETAIL_CODE,MCGILL_ID,TERM_CODE,TRANS_DATE,PAYMENT_ID,AMOUNT,APPROVAL_CODE,TRANS_AMT,ORDER_NUMBER,TYPE_IND,DR_CR_IND,DESCRIPTION,TYPE

The code that I used was:

 v_file_type:=Gzkutil.f_open_utl_file_append(v_path,v_file_name);



  FOR i in 1..1
  LOOP
  UTL_FILE.PUT(v_file_type,'TERMINAL_ID');
  UTL_FILE.PUT(v_file_type,','||'BATCH_NUMBER');
  UTL_FILE.PUT(v_file_type,','||'DATE_TIME');
  UTL_FILE.PUT(v_file_type,','||'ORDER_ID');
  UTL_FILE.PUT(v_file_type,','||'TRANSACTION_TYPE');
  UTL_FILE.PUT(v_file_type,','||'CARD');
  UTL_FILE.PUT(v_file_type,','||'CARD_NUMBER');
  UTL_FILE.PUT(v_file_type,','||'AUTHORISATION_CODE');
  UTL_FILE.PUT(v_file_type,','||'ISO_CODE');
  UTL_FILE.PUT(v_file_type,','||'RESPONSE_CODE');
  UTL_FILE.PUT(v_file_type,','||'RESULT');
  UTL_FILE.PUT(v_file_type,','||'REFERENCE_NUMBER');
  UTL_FILE.PUT(v_file_type,','||'CUSTOMER_ID');
  UTL_FILE.PUT(v_file_type,','||'TRANSACTION_NUMBER');
  UTL_FILE.PUT(v_file_type,','||'SYSTEM_ID');
  UTL_FILE.PUT(v_file_type,','||'DETAIL_CODE');
  UTL_FILE.PUT(v_file_type,','||'MCGILL_ID');
  UTL_FILE.PUT(v_file_type,','||'TERM_CODE');
  UTL_FILE.PUT(v_file_type,','||'TRANS_DATE');
  UTL_FILE.PUT(v_file_type,','||'PAYMENT_ID');
  UTL_FILE.PUT(v_file_type,','||'AMOUNT');
  UTL_FILE.PUT(v_file_type,','||'APPROVAL_CODE');
  UTL_FILE.PUT(v_file_type,','||'TRANS_AMT');
  UTL_FILE.PUT(v_file_type,','||'ORDER_NUMBER');
  UTL_FILE.PUT(v_file_type,','||'TYPE_IND');
  UTL_FILE.PUT(v_file_type,','||'DR_CR_IND');
  UTL_FILE.PUT(v_file_type,','||'DESCRIPTION');
  UTL_FILE.PUT(v_file_type,','||'TYPE');
  END LOOP;
  UTL_FILE.FCLOSE(v_file_type);

Code for F_OPEN_UTL_FILE_APPEND IS:

FUNCTION  f_open_utl_file_append (p_path      IN  VARCHAR2,
                             p_file_name IN  VARCHAR2)
    RETURN UTL_FILE.FILE_TYPE
  IS
     file_handle              UTL_FILE.FILE_TYPE;
    l_path                   VARCHAR2(200);
  BEGIN
    l_path := f_return_utl_path_or_dir(p_path);
    file_handle :=  UTL_FILE.FOPEN( l_path
                                  , p_file_name
                                  , 'A'
                                  , 32767);
    RETURN(file_handle);

END f_open_utl_file_append; 

Is there a way to put the header information at the beginning of the file?

This post has been answered by BluShadow on Apr 22 2022
Jump to Answer
Comments
Post Details
Added on Apr 21 2022
5 comments
749 views