How to read how to read dat.z file and .sas7bdat.z file without unzipping it
/folder1/haauto.prm.oct1995.dat.Z
/folder2/avr1991.sas7bdat.Z
Please provide SAS code example.
The -c option directs the uncompress to send the result to stdout instead of a file, that's how my INFILE PIPE works.
You also use the same option to create the file elsewhere:
uncompress -c /folder1/source.Z > /folder2/target
The original file will stay as it is.
You can find the answer yourself by going to the SAS doc: https://documentation.sas.com./doc/en/helpcenterwlcm/1.0/home.htm
Then search using the key word ZIP and you will find this: https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/lestmtsglobal/n1dn0f61yfyzton1l2ngsa1clllr.ht...
There is example code in the above link.
You cannot.
You will need to uncompress both of those files before SAS will be able to read them.
If you have permission to run operating system commands (and you are running SAS on Unix) you could use a PIPE to read the .dat file.
data want;
infile 'uncompress -c /folder1/haauto.prm.oct1995.dat.Z' pipe;
input .....
But for the SAS dataset you will have to store the uncompressed file somewhere for SAS to be able to read it.
Hello,
our operating system is Unix and I am interested by a pipe command to read the file directly.
Could you please provide an example.
I the same line of though, it is possible to retreive a line into a dataset without unzipping it?
The .Z extension points to the use of the UNIX compress utility, which uses a different algorithm than the ZIP and gzip methods built into SAS. Therefore you have to use the external command for both files. The .dat.Z file can be read into SAS through a PIPE (if it is text), but the .sas7bdat.Z has to be uncompressed in place before SAS can use it as a dataset.
To read a compressed text file into SAS, use
data want;
infile "uncompress -c path_to_your_file" pipe /* other options as needed */;
input ....;
run;
Hello Kurt,
I have use the uncompress unix command directly to the terminal to see how the file react.
uncompress /folder1/aou1991.sas7bdat.z
un compress /folder1/belair.ontprime.sep92.dat.z
after I am obtaining the two files below
/folder1/aou1991.sas7bdat
/folder1/belair.ontprime.sep92.dat
The first one is a SAS dataset, the second one look like a standard text file.
In reality, the source of those two files are in folder2 (production environment) where I am not authorize to manipulate the files.
So I moving these file from folder2 to p drive (windows env) then move from p to folder1 (unix env, but where I can do what I want)
So I wonder if there is a way to uncompress a file from its source to a specific destination or in the work library ?
The -c option directs the uncompress to send the result to stdout instead of a file, that's how my INFILE PIPE works.
You also use the same option to create the file elsewhere:
uncompress -c /folder1/source.Z > /folder2/target
The original file will stay as it is.
This unix command works:
uncompress -c /folder1/aou2000.sas7bdat.Z > /folder2/aou2000.sas7bdat
I am surprise that we don't see the above example into the documentation:
https://www.computerhope.com/unix/uuncompr.htm
It is possible to send the uncompress file into the work library and if it is possible , how ?
If you only need to uncompressed files during your SAS session just write them into the WORK directory.
%let work=%sysfunc(pathname(work));
data _null_;
infile
"cd &work
;uncompress -c /folder1/haauto.prm.oct1995.dat.Z haauto.prm.oct1995.dat
;uncompress -c /folder2/avr1991.sas7bdat.Z avr1991.sas7bdat
" pipe;
input;
put _infile_;
run;
You can then use the DAT file from the &WORK directory and see the SAS dataset in the WORK library.
Both version below are working:
%let work=%sysfunc(pathname(work));
filename oscmd pipe "uncompress -c /folder1/aou2000.sas7bdat.Z > &work./aou2000.sas7bdat 2>&1";
data _null_;
infile oscmd;
input;
put _infile_;
run;
%let work=%sysfunc(pathname(work));
filename oscmd pipe "cd &work. ; uncompress -c /folder1/aou2000.sas7bdat.Z > aou2000.sas7bdat 2>&1";
data _null_;
infile oscmd;
input;
put _infile_;
run;
Redirecting output is considered a basic UNIX skill and therefore not covered in the individual man pages.
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
What’s the difference between SAS Enterprise Guide and SAS Studio? How are they similar? Just ask SAS’ Danny Modlin.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.