【问题标题】:is there anyway we can read sas data directly from sas server?无论如何我们可以直接从sas服务器读取sas数据吗?
【发布时间】:2023-03-14 03:35:01
【问题描述】:

我正在尝试使用 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,但我尝试了另一个端口无法正常工作,您对此有任何想法,请提出建议,非常感谢您对此的想法。

标签: python-3.x dataframe sas data-analysis pysftp


【解决方案1】:

open 函数仍会加载本地文件,无论您之前尝试过什么魔法。

你需要使用pysftp Connection.open:

with conn.open("statfile.sas7bdat", 'r') as fp:

虽然 pysftp 似乎是死项目。考虑改用 Paramiko。

Paramiko 还有它的openSFTPClient.open。例如:
Reading .csv file to memory from SFTP server using Python Paramiko


你的hostkeys 魔法似乎也很可疑。确保您知道自己在做什么,而不是让您的连接不安全。见Verify host key with pysftp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    • 2016-11-16
    • 2016-04-17
    • 1970-01-01
    相关资源
    最近更新 更多