03-19-2016 01:42 PM
I want read a very large .txt file in to SAS and make some midification on its value. after doing that I want to output them back to raw .txt file. but I don't want change any characters' original location in txt file. what can I do?
03-19-2016 04:08 PM
I am sure others can provide better suggestions. For now:
- do you use Enterprise Guide? If you do, you might fins useful this tip from Chris Hemedinger https://communities.sas.com/t5/SAS-Enterprise-Guide/Importing-Extremely-Large-Text-File/td-p/152222
- anyway, you could always load the data of the txt file into a SAS dataset, then you can make the transformation on the dataset, then load the dataset into a different txt file.
Probably there is another method much more optimal, with less steps, but, for now can now work with this procedure
If you need support with the statements, you can always give a look into the SAS help manual, or ask around over here
03-19-2016 05:09 PM
There is an example of how to do that in the help pages for the INFILE statement.
data _null_; /* The INFILE and FILE statements */ /* must specify the same file. */ infile file-specification-1 sharebuffers; file file-specification-1; input state $ 1-2 phone $ 5-16; /* Replace area code for NC exchanges */ if state= 'NC' and substr(phone,5,3)='333' then phone='910-'||substr(phone,5,8); put phone 5-16; run;
03-21-2016 12:49 PM
I strongly recommend that while developing this process that you write to a different file. You can use options like OBS= and FIRSTOBS= to process just a few specified lines of a file.
And unless you do not have space to store the original and the modified files I would recommend creating a new file in general. Writing over your only copy of a set is rife with possibilities of corrupt data.