如何将表从SAS移动到Teradata SQL Assistant?

如何将表从SAS移动到Teradata SQL Assistant?,sas,teradata,Sas,Teradata,我想问您如何将表从SAS移动到TeradaSQL Assistant 我在SAS中所做的是定义一个libname,然后创建要在Teradata中移动的表 libname NAME "/path" proc sql; create table WORK.EXAMPLE as( select * from DATASET ); quit; 但是,我不知道是否需要以这种方式将SAS连接到Teradata: libname NAME teradata USER=tduser PASSWORD=tdp

我想问您如何将表从SAS移动到TeradaSQL Assistant

我在SAS中所做的是定义一个libname,然后创建要在Teradata中移动的表

libname NAME "/path"

proc sql;
create table WORK.EXAMPLE as(
select *
from DATASET
);
quit;
但是,我不知道是否需要以这种方式将SAS连接到Teradata:

libname NAME teradata USER=tduser PASSWORD=tdpasswd SERVER=TDServ ; 

proc sql;
   connect to teradata (
tdpid=“” user=“” password=“”);
create table WORK.EXAMPLE as 
select * from connection to teradata
(select * from DATASET
); quit;
我的问题是:

在第二个LBNEX中,我应该在哪里考虑路径? 我应该考虑上面的哪一个代码,为什么? 如何在Teradata中“调用”此表?我尝试使用SELECT*FROM WORK.EXAMPLE,但它不存在。
谢谢你的帮助

您可以使用LIBNAME语句连接到Terdata

libname mylib TERADATA .... ;
或PROC SQL中的CONNECT语句

proc sql;
  connect to teradata .... ;
事实上,您甚至可以在connect语句中使用先前创建的LIBNAME语句中创建的libref

libname mylib TERADATA .... ;
proc sql;
  connect using mylib ;
一般来说,我发现使用PROC APPEND将数据复制到Teradata是最容易的

libname td TERADATA ... ;
libname mysas 'path to where my SAS datasets live';
proc append base=td.target_table data=mysas.source_table force;
run;

如果目标表不存在,SAS将创建它。在这种情况下,请小心,因为您可能不希望使用默认变量类型或以这种方式创建的主索引。

WORK是一个临时表,仅在执行期间保持可访问状态。要持久化数据集,需要引用lib的名称,而不是在第一节的CREATE语句中使用。然后,在您的第二个区域中,您可以在lib中引用该表,而无需创建其他临时表。谢谢Kade。如果我能很好地理解你说的话,我需要编写proc-sql;创建表名。例如,从数据集中选择*;退出但如何将表移动到Teradata?我试图从NAME.EXAMPLE编写select*,但即使在这种情况下,表也不存在。我是否需要在SAS中使用connect to Teradata?运行第一个命令后:PROC SQL;创建表LIBNAME.TBL_NAME作为“从数据集中选择*”;退出您应该能够简单地执行“PROC-SQL”;从LIBNAME.TBL_NAME中选择*;退出`因为您的库应该可以从SAS工作区中访问。。。但是,这在很大程度上取决于环境的设置方式,因此这意味着表已经上载到Teradata中。但如果不使用connect to,如何将SAS连接到Teradata?这是一个愚蠢的问题,但这些概念对我来说是新的Teradata的SQL assistant工具只是一个访问Teradata数据库的实用工具,所以它与你的问题没有任何关系。谢谢你的回答,Tom。然后,当我创建一个libname mylib TERADATA时,这应该是我在TERADATA中调用我的表时需要添加的内容:从mylib.table中选择*不应该?是的。请注意,在libname中,您将连接到teradata服务器上的特定数据库。因此名称表将是该数据库中表的名称。SAS中用于libref的名称限制为8个字符,但Teradata中的数据库名称可能会更长。因此,当通过SQL Assistant直接在Teradata中运行代码或使用SAS的passthru代码时,您应该使用数据库名称somedb.table,而不是您发明的要在libname语句中使用的SAS libref mylib.table。有没有办法知道我正在使用的数据库?我没有关于该ini的信息我的练习您可能有一个默认数据库分配给您的帐户。因此,在Teradata内部,您可以对表使用一个级别名称。使用SAS libref时,只需在一个级别名称前加上前缀即可。不确定这是否回答了您的问题,但您可以在SQL Assistant中运行几个SQL请求以获取更多信息:帮助数据库;将为您提供对象列表表、视图、宏。。。在给定的数据库中;选择数据库;将为您提供该会话的当前默认数据库。因此,如果从MyTable运行SELECT*,它将使用默认数据库限定MyTable。