【问题标题】:Prepare SAS data to populate SQL Server temporary table, use that temp table to join with base sql server table in SAS EG准备 SAS 数据以填充 SQL Server 临时表,使用该临时表与 SAS EG 中的基本 sql server 表连接
【发布时间】:2019-05-17 10:21:32
【问题描述】:

我有一个场景,我需要从数据库 A 中的 Teradata 表中选择数据。使用该结果集填充 SQL Server 临时表。此临时表需要与基本 SQL 服务器表连接。这个结果集需要导出到另一个数据库表。需要在 SAS 企业指南中进行

这是我目前的方法, 首先创建一个SAS数据集

第一步

proc sql;
  connect to teradata(user="abc" pw="def" database=cust fast load=yes mode=Teradata);
create table tmp_result as
select  from connection to teradata
(
SELECT 
Cust_id,
Name,
Product
 FROM Teradata table where ProductId=10
)DISCONNECT FROM TERADATA;
QUIT;

第二步

proc sql;
connect to odbc(dsn=temp user="abc" pw="def" connection=shared);
create table ##tmp
(
Cust_id int
Name varchar(100),
Product varchar(50);
)disconnect from ODBC;
QUIT;

第 3 步——将数据从第一个 SAS 数据集插入到临时表中

第 4 步 - 从下面的选择查询中创建一个基本的 sql server 表

SELECT *
FROM base sql server table join temp table (above temp table)

第 5 步 再次从上述第 4 步结果集创建一个 sas 数据集,然后在最后一步

第 6 步 将第 5 步结果集插入 teradata 表数据库 B。

我的方法需要帮助..我仍在研究这个解决方案,但如果我的方法正确,我需要您的意见

提前谢谢..

【问题讨论】:

    标签: sql-server sas teradata


    【解决方案1】:

    您可以通过为数据库定义 libname 来执行隐式 sql 传递。

         libname teralib teradata server=myserver user=myuserid pwd=mypass;
         libname sqllib sqlsvr user=testuser password=testpass;
         libname saslib "somelocation"; /* you do not need this unless your manipulating 
       something in SAS*/
    
     proc sql;
     create teralib.yourotherteradatatable as
    select a.id, b.col from sqllib.yoursqltable a
    inner join teralib.yourteradatatable b
    on a.yourinterstedcol = b.yourinterstedcol;
    quit;
    

    【讨论】:

    • 感谢 Rob 和 Kiran 的帮助。忙,忘了感谢。迟到总比不好;)
    【解决方案2】:

    取决于数据量 从 Teradata 导出时,您需要 TPT=NO FASTEXPORT=YESTPT=YES FASTEXPORT=YES 使用旧版 FastExport 或 Teradata Parallel Transporter Export 运算符。如果在您的 SAS 环境中安装了 TPT,则后者优于前者。将数据推送回 Teradata,将 FASTEXPORT 替换为 FASTLOAD,或者根据可用的数据量和 TPT,考虑使用 Stream 运算符的 TPT=YES MULTISTMT=YES

    您的方法将取决于此 SAS 工作流的运行频率、运行此工作流的用户数量、在数据库和 SAS 环境之间移动的数据量,以及 SAS/Access 接口是否可用于每个数据库平台.

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-09
      • 1970-01-01
      • 2011-09-06
      • 1970-01-01
      • 2011-06-01
      • 2011-02-14
      • 1970-01-01
      • 2010-09-07
      相关资源
      最近更新 更多