SQL 서버에서 테이블을 추출한 다음 Oracle 테이블에로드하는 SAS 작업을 수행하고 있습니다.SAS의 BLOB 필드가 잘 리면
SQL 서버에있는 필드 중 하나가 BLOB이며 1G만큼 클 수 있습니다. 오라클 테이블에서이 blob을 실행할 때 길이 경고가 표시되고 잘 리면 결과 파일이 손상됩니다.
SAS는 문자 변수가 최대 32K가 될 수 있지만 SAS는 최대 2G BLOB에 액세스 할 수 있다고 명시하고 있습니다.
어떻게 구현할 수 있습니까? 여기
proc sql;
create view work.W2K3NU8 as
select
ID,
DNUMBER,
FILENAME,
FILE
format = $HEX2048.
informat = $HEX2048.,
(input(compress(DATEENTERED),YYMMDD10.)) as DATEENTERED length = 8
format = date.
informat = date.
label = 'DATEENTERED',
(input(compress(DATEADDED),YYMMDD10.)) as DATEADDED length = 8
format = date.
informat = date.
label = 'DATEADDED',
(input(compress(DATECHANGED),YYMMDD10.)) as DATECHANGED length = 8
format = date.
informat = date.
label = 'DATECHANGED',
TYPE
from &SYSLAST;
quit;
AND
는 data trd.GAFILES
(dbnull = (
ID = NO
DNUMBER = YES
FILENAME = YES
GA_FILE = YES
DATEENTERED = YES
DATAADDED = YES
DATECHANGED = YES
TYPE = YES
ETL_CREATE = YES
ETL_UPDATE = YES));
attrib ID length = $255
format = $255.
informat = $255.
label = 'ID';
attrib DNUMBER length = $10
format = $10.
informat = $10.
label = 'DNUMBER';
attrib FILENAME length = $255
format = $255.
informat = $255.
label = 'FILENAME';
attrib GA_FILE length = $4096
format = $HEX2048.
informat = $HEX2048.
label = 'GA_FILE';
attrib DATEENTERED length = 8
format = DATETIME20.
informat = DATETIME20.
label = 'DATEENTERED';
attrib DATAADDED length = 8
format = DATETIME20.
informat = DATETIME20.
label = 'DATAADDED';
attrib DATECHANGED length = 8
format = DATETIME20.
informat = DATETIME20.
label = 'DATECHANGED';
attrib TYPE length = $100
format = $100.
informat = $100.
label = 'TYPE';
attrib ETL_CREATE length = 8
format = DATETIME20.
informat = DATETIME20.
label = 'ETL_CREATE';
attrib ETL_UPDATE length = 8
format = DATETIME20.
informat = DATETIME20.
label = 'ETL_UPDATE';
call missing(of _all_);
stop;
run;
이 질문을 속임수로 표시하고 싶지만 Joe가 약 4 년 전에는 더 포괄적 인 대답을 제공하지 못했기 때문에이 슬라이드를 풀어 보겠습니다 .-- 원본 원본 : http://stackoverflow.com/questions/2686291/large-character-field-sizes-sas 4 년 후에 우리는 여전히 같은 문제가 있다는 것을 슬프다. –