我不确定为什么在尝试连接到odbc时会出错?
proc sql; 24创建表xxx.test为 25(从* nxxxe.nxrxxt中选择*);
1)连接成功 2)libref成功
我没有执行任何查询。为什么我有语法错误?我甚至没有任何)
答案 0 :(得分:2)
您的查询中有圆括号;尝试删除它们:
proc sql;
create table kyle.test as
select *
from noagree.no_agreement_list;
quit;
但是从一张小桌子开始尝试这个。此外,特别是对于Teradata,指定索引非常重要。使用您拥有的代码,数据集中的第一个SAS变量将用作索引。选择不当的索引会对您的数据库产生严重的负面影响(影响其他用户以及您自己。
我自己使用SAS / Access到Teradata,所以我不知道这些选项是否可用于ODBC,但这里有一个如何显式定义索引和各种列类型的示例:
data kyle.test
( dbcreate_table_opts='primary index(INDEX_COLUMN)'
dbtype=( INDEX_COLUMN='INTEGER NOT NULL'
, USER_NAME='VARCHAR(120) CHARACTER SET LATIN NOT CASESPECIFIC'
, PHONE_NUMBER='CHAR(10)'
, CONTACT_DATE="DATE FORMAT 'yyyy-mm-dd'"
, FROM_LINE_NUM='SMALLINT'
, DOLLAR_DATA='DECIMAL(15,2)'
)
);
set noagree.no_agreement_list;
run;
请注意,这使用的是普通SAS数据步骤,而不是PROC SQL
;将使用标准SAS转换复制数据集中未列在dbtype
选项中的任何变量。
最后,一旦您开始工作,请确保运行“收集统计信息”步骤,您可以使用SQL Assistant工具(SQLA)执行此操作。我假设你有权访问SQLA,特别是如果你对某个数据库有写权限的话。