The LIBNAME statement: Specifying a database server or workbook
The SAS language can read information from, and write information to, a variety of different file types, including SAS-language datasets, database tables, IBM z/OS VSAM files, text files (including comma-separated values files) and so on.
This article only describes how to use the LIBNAME global statement to specify a database server or Microsoft Excel workbook for input and output. For information on how to use other file types, see Introduction to the LIBNAME statement: SAS language libraries.
The LIBNAME global statement can be used to create a connection to a database server or to a workbook. You can then use this connection to access database tables or worksheets. The connection between the SAS language program and the database or workbook is made using a data engine.
The contents of a library are specified in a SAS language program using the following format:
libref.member
where libref is a library reference and member is a table in a database, or worksheet in a workbook. This is known as a two-level name.
To specify a library reference for a database server, or an Excel file, the LIBNAME statement has the format:
LIBNAME libref data-engine db-or-workbook-name options
where:
libref | The name of the library reference that will be used in SAS language programs. |
data-engine | The name of the data engine used to read to or write to the specified database server or file. |
db-or-workbook-name | The name of the database server or the workbook that contains the tables you want to access. |
options | One or more options that affect how a table or workbook is accessed (such as authorisation details), provide information about how to handle the file, specify what to do with SQL commands, and so on. |
For example, to access a MySQL database you use the MYSQL data engine:
LIBNAME mysv MySQL server=mysv user=username password=pwd qualifier=user1;
This creates a connection to the MySQL server mysv, using the login credentials specified.
Note: To connect to a database, you must first set-up client connections for the database servers. How you do this is explained in Connecting to a MySQL database from Altair SLC on Windows.
To read the data in a database table, you specify the table name as a member of the library; that is, as the second element of a two-level name:
libref.table-name
where libref is the library reference you created for the database server using LIBNAME, and table-name is the name of the table you want to access in the database. In the previous example, the library reference is mysv.
To create a new table in the database server specified in the example above:
PROC SQL; CREATE TABLE mysv.newtb (x varchar(3)); QUIT;
This creates a new table called newtb in the database mysv; the table contains the column x.
You can read data from and write data to a table:
DATA mysv.newtb; SET mysv.tab1; WHERE x GT 2; RUN;
This reads all the rows in the table tab1 where the value of x is greater than 2 and writes those rows to the table newtb in the same database.
Similarly, you can read a worksheet in an Excel workbook. First, you connect to the workbook using the LIBNAME statement:
LIBNAME mywb XLSX 'c:\temp\wb1.xlsx';
Here, XLSX is the data engine used to connect to a workbook. You can then use the library reference mywb to connect to the workbook in other programs. A DATA step can access a worksheet using the libref.sheetname format; for example:
DATA outds; SET mywb.sheet1; WHERE x GT 2; RUN;
This reads all the rows in the worksheet sheet1 where the value of x is greater than 2 and writes those rows to the dataset outds in the Work library (the default library).