2017-08-28 92 views
0

我們一直在使用EG來手動運行SAS作業,並且我正在嘗試使用shell腳本來自動化一些SAS進程。但是,以前在EG中運行的所有腳本現在都會提供一個錯誤,說明Libref未分配。如何在UNIX中分配SAS Libref?

如何將EG中的所有庫分配/遷移到UNIX以供所有SAS腳本使用?

這是我用來測試的代碼之一:

proc sql print; 
connect using CPP_SRC as sql;     
create table RESULTS.dummy_tt2 as 
select * 
    from connection to sql(select * from bns_results.dummy_tt) ; 
disconnect from sql; 
quit; 

,我得到的錯誤:

NOTE: SAS initialization used: 
     real time   0.03 seconds 
     cpu time   0.02 seconds 

1   proc sql print; 
2   connect using CPP_SRC as sql; 
ERROR: Libref CPP_SRC is not assigned. 
NOTE: PROC SQL set option NOEXEC and will continue to check the syntax of statements. 
3   create table RESULTS.dummy_tt2 as 
4   select * 
5    from connection to sql(
6       select * from bns_results.dummy_tt 
7       ) ; 
NOTE: Statement not executed due to NOEXEC option. 
8   disconnect from sql; 
NOTE: Statement not executed due to NOEXEC option. 
9   quit; 
NOTE: The SAS System stopped processing this step because of errors. 
NOTE: PROCEDURE SQL used (Total process time): 
     real time   0.00 seconds 
     cpu time   0.00 seconds 

感謝

+0

你需要具體,有很多可能的原因。你可以展示一個例子,還有一個日誌?一種可能是它們是用windows文件分隔符('\')而不是unix('/')定義的。 –

+0

@AllanBowe我已經更新了示例。 'ERROR:Libref CPP_SRC'這一行沒有被賦值,這讓我認爲我需要在Unix中初始化SAS庫來運行它。 – user3646699

回答

0

在EG的CPP_SRC庫中可能定義元數據。嘗試運行這個macrooptions mprint;來提取您需要在Unix中重新創建庫的SAS代碼。

簡而言之,您需要創建一個包含所有libname語句的新腳本,以便在Unix會話中分配它們。

+1

這個工程,我最終創建一個單獨的autoexec_cpp.sas並使用它像這樣'sas -insert autoexec「./autoexec_cpp.sas」test3.sas' – user3646699