I have been working on a SAS job that extracts a table from SQL server and then loads that table to an Oracle table.
One of the fields there in SQL server is blob and they can be as big as 1G. I am getting length warnings when I run this blobs on oracle table seems to be truncated and as a result files there are corrupt.
I have seen SAS stating that character variable can be max 32K but SAS also states it can access blobs up to 2G.
How can we achieve that?
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 here is data step
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;