如何在没有 sql 沙箱的情况下使用 SAS 数据集创建易失性 table inn teradata
How to create volatile table inn teradata using SAS dataset without sql sandbox
我有一个 SAS 数据集,我需要使用 SAS 数据集在 Teradata 中创建一个易失性 table。但是,我没有用于在 Teradata 服务器上存储 table 的沙箱。有没有一种方法可以在没有 SQL 沙箱的情况下从 SAS 数据集创建 Teradata volatile table。
在 Teradata 中创建 volatile table 非常简单,只需在 libname 语句中使用 dbmstemp=yes
选项即可。
libname TDWORK teradata connection=global dbmstemp=yes .... ;
data tdwork.test1 ;
set sashelp.class ;
run;
确保在所有 LIBNAME 和 CONNECT 语句上使用 connection=global
选项,以便所有与 Teradata 的连接都使用相同的会话,这样您就可以看到您的易失性 table。至少保持一个 libref 的打开状态,以便连接持续存在。
那么你也可以使用 passthru SQL 创建一个 volatile table.
proc sql ;
connect to teradata (connection=global .... );
execute (
create volatile table test2 as (
select * from test1
) with data on commit preserve rows
) by teradata;
quit;
或者在直通 SQL 代码中引用可变的 tables。
因此,如果您想从 MYDB.MYTABLE
中提取 Teradata 中的所有记录,其中 NAME
在您上传到易失性 table TEST1
的名称列表中你用上面的第一个数据步骤制作的,你可以使用这样的代码:
proc sql ;
connect to teradata (connection=global .... );
create table mytest as select * from connection to teradata
( select * from mydb.mytable
where name in (select name from test1)
);
quit;
我有一个 SAS 数据集,我需要使用 SAS 数据集在 Teradata 中创建一个易失性 table。但是,我没有用于在 Teradata 服务器上存储 table 的沙箱。有没有一种方法可以在没有 SQL 沙箱的情况下从 SAS 数据集创建 Teradata volatile table。
在 Teradata 中创建 volatile table 非常简单,只需在 libname 语句中使用 dbmstemp=yes
选项即可。
libname TDWORK teradata connection=global dbmstemp=yes .... ;
data tdwork.test1 ;
set sashelp.class ;
run;
确保在所有 LIBNAME 和 CONNECT 语句上使用 connection=global
选项,以便所有与 Teradata 的连接都使用相同的会话,这样您就可以看到您的易失性 table。至少保持一个 libref 的打开状态,以便连接持续存在。
那么你也可以使用 passthru SQL 创建一个 volatile table.
proc sql ;
connect to teradata (connection=global .... );
execute (
create volatile table test2 as (
select * from test1
) with data on commit preserve rows
) by teradata;
quit;
或者在直通 SQL 代码中引用可变的 tables。
因此,如果您想从 MYDB.MYTABLE
中提取 Teradata 中的所有记录,其中 NAME
在您上传到易失性 table TEST1
的名称列表中你用上面的第一个数据步骤制作的,你可以使用这样的代码:
proc sql ;
connect to teradata (connection=global .... );
create table mytest as select * from connection to teradata
( select * from mydb.mytable
where name in (select name from test1)
);
quit;