如何正确连接数据库?

时间:2013-10-03 19:59:03

标签: error-handling

我不确定为什么在尝试连接到odbc时会出错?

proc sql;     24创建表xxx.test为     25(从* nxxxe.nxrxxt中选择*);

1)连接成功 2)libref成功

我没有执行任何查询。为什么我有语法错误?我甚至没有任何)

1 个答案:

答案 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,特别是如果你对某个数据库有写权限的话。