2013-10-03 124 views
1

我不知道爲什麼我會嘗試連接到odbc時會出現錯誤如何正確連接到數據庫?

proc sql; 24 create table xxx.test as 25(select * from nxxxe.nxrxxt);

1)連接成功 2)邏輯庫引用名成功

我沒有執行任何查詢。我怎麼會有語法錯誤?我什至沒有任何)

回答

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;在未在dbtype選項列出的數據集的任何變量將被複制使用標準的SAS轉換。

最後,onc如果你得到這個工作,一定要運行「收集統計」步驟,你可以使用SQL Assistant工具(SQLA)來完成這一步驟。我假設你有權訪問SQLA,特別是如果你有對某些數據庫的寫權限。