首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python或R可以将本地数据帧与SAS中的Proc SQL等数据库表连接起来吗?

Python或R可以将本地数据帧与SAS中的Proc SQL等数据库表连接起来吗?
EN

Stack Overflow用户
提问于 2020-02-25 01:17:14
回答 1查看 350关注 0票数 0

PROC SQL可以将本地表连接到数据库中的本地表。例如,加入db.sales和work.customer_info。据我所知,R或Python中没有任何包可以做到这一点;要么必须将本地表上传到数据库并在那里完成连接,要么必须将表(整个或子集)作为数据帧查询到本地内存中,然后与平面文件连接。

在Python或R中有没有办法做到这一点?或者像这样的查询,SAS更好吗?

EN

回答 1

Stack Overflow用户

发布于 2020-02-25 03:23:23

通常,没有客户端(这里是Python Pandas、R和SAS)真正将服务器存储的数据库表连接到客户端对象(如数据框或数据集)。客户端处理到后端系统的远程连接,然后导入结果集以供其他本地使用。具体地说:

Python Pandas和R中的

  • 数据帧在内存中运行,您可以在其中连接/合并/附加当前全局环境中源自平面文件或其他结构的任何数据帧。Python和R还可以连接到关系数据库,查询需要作为数据框导入到当前会话全局环境中的表。默认库的SAS中的
  • 数据集在硬盘或文件系统文件夹中运行,在这些文件夹中,您可以连接/合并/附加已定义库中的任何数据集,或如9.4 docs所述:

libref是存储SAS文件的聚合存储位置的快捷方式名称或“昵称”。

但是,当使用libname连接到数据库时(如在SAS/Access API中),该库只是一个可视化的库,而不是实际的物理数据库表和视图,或者像9.4 docs指定的那样(重点补充):

libref指定任何SAS名称,该名称用作将SAS与数据库、模式、服务器或表和视图组相关联的别名。与全局SAS LIBNAME语句类似,SAS/ACCESS LIBNAME语句为数据存储位置创建快捷方式或昵称。SAS libref是虚拟或物理目录的别名。DBMS /ACCESS libref是存储表和视图的数据库、模式或服务器的别名。

物理目录的一个例外是文件级数据库,包括MS Access和SQLite,它们不是服务器级数据库,如Postgres、SQL Server、Oracle:

libname mydata "C:\Path\To\Database.accdb";libname mydata odbc complete = "Driver={SQLite3 ODBC Driver};Database=C:\Path\To\database.db";

总而言之,与Python和R类似,SAS不在物理数据库表上运行,但可能会将结果导入实际的后端。因此,在您的示例中,每次调用proc sql中的数据库表时,SAS都会运行一个与Python和R类似的远程连接来检索结果,然后在客户端对本地数据集进行join处理。所有处理都可以在内存中处理,并将结果保存到硬盘(即临时工作文件夹)。用户看到的一个步骤可以是SAS的多个步骤。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60380920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档