无论如何我们可以直接从sas服务器读取sas数据吗?
Posted
技术标签:
【中文标题】无论如何我们可以直接从sas服务器读取sas数据吗?【英文标题】:is there anyway we can read sas data directly from sas server? 【发布时间】:2021-12-30 07:20:29 【问题描述】:我正在尝试使用 pyreadstat 直接从 sftp 服务器读取 sasdataset,因为我无法下载数据,我正在尝试这种方法:
import pysftp
class My_Connection(pysftp.Connection):
def __init__(self, *args, **kwargs):
try:
if kwargs.get('cnopts') is not None:
return
kwargs['cnopts'] = pysftp.CnOpts()
kwargs['cnopts'].hostkeys = None
except pysftp.HostKeysException as e:
self._init_error = True
print('Warning Failed to load Host-keys')
else:
self._init_error = False
self._sftp_live = False
self._transport = None
super().__init__(*args, **kwargs)
def __del__(self):
if not self._init_error:
self.close()
with My_Connection(SFTP_HOST,username=SFTP_USER,password=SFTP_PASSWORD,) as conn:
conn.cwd('/sas/sasdata/sasdev/sasdatasets')
with open("/sas/sasdata/sasdev/sasdatasets/statfile.sas7bdat", 'r') as fp:
df = pyreadstat.read_sas7bdat(fp)
当文件很大时,谁能帮助我如何在服务器中直接读取 sasdataset?
【问题讨论】:
你能用 SASpy 代替吗? sassoftware.github.io/saspy 它是 SFTP 服务器还是 SAS 服务器?这些是非常不同的用例。 这是您有权访问(或可以访问)的 SAS 服务器吗?如果是这样,那么 Reeza 建议的 SASPy 或 SWAT(SASPy 用于 9.4,SWAT 用于 Viya)是迄今为止的最佳选择。 @Reeza 在我的组织中,我们不在本地运行,主要在远程服务器中,我们如何在本地连接到 saspy,我试图通过 swat 连接它不占用我通常的端口 22使用 htpps url 登录到 sas,但我尝试了另一个端口无法正常工作,您对此有任何想法,请提出建议,非常感谢您对此的想法。 【参考方案1】:open
函数仍会加载本地文件,无论您之前尝试过什么魔法。
你需要使用pysftp Connection.open
:
with conn.open("statfile.sas7bdat", 'r') as fp:
虽然 pysftp 似乎是死项目。考虑改用 Paramiko。
Paramiko 还有它的open
,SFTPClient.open
。例如:Reading .csv file to memory from SFTP server using Python Paramiko
你的hostkeys
魔法似乎也很可疑。确保您知道自己在做什么,而不是让您的连接不安全。见Verify host key with pysftp。
【讨论】:
以上是关于无论如何我们可以直接从sas服务器读取sas数据吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 .net 中的 SAS 密钥从 Azure Blob 读取数据
如何在WLATIN1编码的SAS会话中使用UTF-8编码的文件?