최근에 DB2를 사용하여 주로 SAS를 사용하여 액세스하는 가속기 (IDAA)를 얻었습니다.DB2 타임 스탬프를 사용하여 SAS에서 테이블 만들기
이렇게하면 네트워크 문제로 인해 행을 삽입하기 전에 먼저 표를 만드는 것이 필요합니다.
내 문제, 내가 선택 문을 사용하여 테이블을 만들 수 있지만이 매우 느리지 만, 여기에 내가 SAS의 형식이 DATETIME30.6
입니다 볼 수있는 올바른 타임 스탬프 형식의 테이블을 만드는그러나 내가 좋아하는 뭔가를 시도하는 경우 : 제공
RSUBMIT prod_acc;
Proc delete data=user.table1; run; %PUT &sqlxrc &sqlxmsg;
proc sql inobs=MAX stimer feedback noerrorstop;
connect to db2(ssid=server);
create table user.table1
(
date datetime30.6
,reference char(16)
,transact char(20)
,alias char(60)
,amount decimal(15,2)
,currency char(3)
);
%PUT &sqlxrc &sqlxmsg;
quit;
run;
을 로그
(
15 date datetime30.6
-----------
1 22
200
WARNING 1-322: Assuming the symbol DATE was misspelled as datetime30.
ERROR 22-322: Syntax error, expecting one of the following: a quoted string,
an integer constant,), ',', CHECK, DISTINCT, FORMAT, INFORMAT, LABEL, LEN,
LENGTH, NOT, PRIMARY, REFERENCES, TRANSCODE, UNIQUE, ^, ~.
ERROR 200-322: The symbol is not recognized and will be ignored.
내가 DB2에서 보면, 열이 SAS는하지 않는 유형의 timestmp을 가지고에 다음과 같은 유형으로 인식합니다.
(
31 date timestmp
--------
22
76
ERROR 22-322: Syntax error, expecting one of the following: CHAR, CHARACTER, DATE, DEC,
DECIMAL, DOUBLE, FLOAT, INT, INTEGER, NUM, NUMERIC, REAL, SMALLINT, VARCHAR.
ERROR 76-322: Syntax error, statement will be ignored.
인터넷 검색을 시도과 답변의 다른 버전을 많이 찾았지만, 내가 볼 수있는 것도이 관련이 없으며, 가장 가까운 뭔가에 대해 수동으로 포맷을 만드는,하지만 난 그렇게하는 방법을 알아낼 수 없습니다이었다 .
아이디어가 있으십니까?
'USER'는 SAS에서 정의한 libref의 이름 또는 원격 DB2 데이터베이스의 데이터베이스/스키마 이름입니다. 작성한 구문은 SAS 코드이므로 USER가 libref라고 가정합니다. 원격 데이터베이스에 코드를 삽입하려면 PROC SQL 내부에서'execute' 문을 사용하십시오. – Tom
사용자는 정보를 제공하지 않는 내 Windows 사용자입니다. D – user2656595
사용자 이름을 libref로 사용하는 것은 8자를 초과 할 가능성이 높기 때문에 아마 잘 작동하지 않을 것입니다. – Tom