- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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.
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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?
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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 ?
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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 ?
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Redirecting output is considered a basic UNIX skill and therefore not covered in the individual man pages.