我正在尝试使用Python查询以SAS的sas7bdat文件格式存储的数据库(我没有SAS)。 sas7bdat文件存储在一个远程服务器上,我可以通过SSH连接访问paramiko,但是太大了,不能简单地用Python的sas7bdat模块读取或在本地下载。
有人能想到一种方法来使用SSH连接来查询 sas7bdat文件,并将查询结果加载到Python(Pandas DataFrame等)中吗?或者也许是一种完全不同的方法?
答案 0 :(得分:0)
.sas7bdat
是一种专有的数据库格式,必须进行反向工程才能访问。如果您没有安装sas7bdat Python模块,则在没有创建可以读取文件的自定义脚本的情况下,您将无法查询它。这假设文件是未压缩的;如果它被压缩,你将有更难以阅读它。
我建议您阅读Python sas7bdat script和R code,以了解如何阅读该文件。
更简单的解决方案是获得安装sas7bdat文件的权限;如果它对你正在做的工作至关重要,你的管理员会给你许可。
答案 1 :(得分:0)
您可以尝试Carolina S-JDBC来查询sas7bdat文件。它支持SQL语法,因此您可以对数据进行子集化,并在包括Python在内的不同语言环境中正常运行:
import jaydebeapi
conn = jaydebeapi.connect('com.dullesopen.jdbc.Driver',
'jdbc:carolina:v2:libnames=(dir=\'./mydata\')',
'sjdbc/carolina-jdbc-2.0.4.jar')
curs = conn.cursor()
# select a subset of data
curs.execute( "SELECT * FROM big_sasfile WHERE id < 1000")
# replace with saving to a file
print curs.fetchall()
conn.close()
如果您没有jaydebeapi
Python模块,并且无法在没有root访问权限的情况下安装它,您可以编写一个小型Java程序,使用驱动程序对sas7bdat文件运行查询。
S-JDBC是一个独立的jar文件,因此您不需要主目录之外的任何权限来“安装”它。
免责声明: Carolina S-JDBC是Dulles Research的商业产品,提供免费评估。我为Dulles Research工作。