Imports SAS files to SQL databases. Supports both *.sas7bdat
and XPORT (*.xpt
) files.
The SAS software itself is not required.
sas2db
supports SQLite3 with no additional dependencies or setup, so we'll start with that. To import from SAS to SQLite3:
-
Run the conversion.
sas2db path/to/src.sas7bdat
-
A
src.db
(matching your input file name) will be created. -
Run SQL! Example:
$ sqlite3 src.db sqlite> .tables mydata sqlite> SELECT COUNT(*) FROM mydata; 200
For more options:
sas2db -h
Aside from SQLite3, sas2db
supports other databases like PostgreSQL and MySQL. This support comes from SQLAlchemy under the hood, so see their list of supported "dialects".
To use another database:
- Ensure that the destination database is installed, running, created, and accessible from wherever you will be doing the import.
- Install the corresponding driver.
- On the Dialects page, click your preferred database, then under "DBAPI Support", click one of the options.
- The first DBAPI option is probably fine, though you may have to try multiple.
- Run
sas2db
, passing the database URL to the--db
argument.
Example for PostgreSQL:
# create the database
createdb -U postgres sas_import
# install driver
pip3 install psycopg2
# run the import
sas2db --db postgresql+psycopg2://postgres@localhost:5432/sas_import path/to/src.sas7bdat
-
Install Pipenv.
-
Clone/download the repository.
-
From the project directory, run
pipenv install --dev pipenv shell
-
Run PostgreSQL. Example in Docker:
docker run --rm -it -p 5432:5432 --name pg postgres
-
Create
sas2db
database in PostgreSQL for testing. Example in Docker:docker exec -it pg createdb -U postgres sas2db
-
Run tests:
python -m unittest
To use the script:
python3 sas2db/run.py path/to/src.sas7bdat
data.gov has data sets you can test with.
Other tools to look at for importing/exporting data to/from SAS:
- sas7bdat Python package
- Useful in case you can't use Pandas for some reason
- Pandas (used in
sas2db
) uses a modified version of the sas7bdat package
- SAS ODBC drivers
- SAS's
PROC EXPORT
- sas2bdat R package
Information about data types:
- Documentation
- SAS to Python type parsing