One is a touch concerned about why there are a 4,000 to begin with.
Proc export generates data step code to write to the text file created.
You should be able to copy that from the log and paste into the editor. Clean it up to remove line numbers and such from the log.
Then add in the bits that are missing.
For example this is what the log shows for exporting the SASHELP.CLASS data set.
9 data _null_;
10 %let _EFIERR_ = 0; /* set the ERROR detection macro variable */
11 %let _EFIREC_ = 0; /* clear export record count macro variable */
12 file 'C:\Users\Owner\class.csv' delimiter=',' DSD DROPOVER lrecl=32767;
13 if _n_ = 1 then /* write column names or labels */
14 do;
15 put
16 "Name"
17 ','
18 "Sex"
19 ','
20 "Age"
21 ','
22 "Height"
23 ','
24 "Weight"
25 ;
26 end;
27 set SASHELP.CLASS end=EFIEOD;
28 format Name $8. ;
29 format Sex $1. ;
30 format Age best12. ;
31 format Height best12. ;
32 format Weight best12. ;
33 do;
34 EFIOUT + 1;
35 put Name $ @;
36 put Sex $ @;
37 put Age @;
38 put Height @;
39 put Weight ;
40 ;
41 end;
42 if _ERROR_ then call symputx('_EFIERR_',1); /* set ERROR detection macro variable */
43 if EFIEOD then call symputx('_EFIREC_',EFIOUT);
44 run;
NOTE: The file 'C:\Users\Owner\class.csv' is:
Filename=C:\Users\Owner\class.csv,
RECFM=V,LRECL=32767,File Size (bytes)=0,
Last Modified=09Jun2021:09:26:43,
Create Time=09Jun2021:09:26:29
Insert additional stuff into the Put after the "If _n_ = 1" to get the additional "headers".
Yes that's a lot of stuff to add depending on where the headers stopped appearing from the Export code.