03-17-2016 09:33 AM
Hi, I am trying to use the PROC SQL pass through facility to import a .XML file. Below is an example of something I use for EXCEL files, is there a .XML equivalent?
proc sql noprint; connect to excel (path = "\\MyArea\My_File.xls"); create table contents as select * from connection to excel (select * from [Contents$]); disconnect from excel; quit;
The above code would pick up the tab called "Contents" and create a SAS data set call Contents.
03-17-2016 10:47 AM
As far as I can tell that is not using pass through. It is using the libname excel technology. What libname excel does is setup a SAS library reference to the file, and creates a dataset for each sheet it can find and process, a bit like a proc import for each sheet, with all of the problems associated with importing an Excel file. It is not pass through. Pass through is where a set of SQL statements is taken from SAS, and sent to another systems SQL processor, for example:
connect to oracle (..);
execute by oracle (select * from abc);
The "select * from abc" is sent to Oracle's SQL parser, hence it can use functions and types in the oracle system, and not ones in the SAS system.
Now your second question, regarding access to XML. This is done by map files, you can use the free XMLMapper tool from SAS, but basically you need to provide a "spec" for the XML document, i.e. how the file is supposed to be read into SAS - remember an XML file could have multiple datasets! Have a look here for example: