Можно ли прочитать тип данных RAW в SAS? - PullRequest
0 голосов
/ 06 февраля 2020

Я работаю с SAS и использую данные из базы данных Oracle через соединение ODB C. Есть некоторые поля, которые мне требуются из этой базы данных, которые имеют data_type = RAW в среде Oracle SQL Developer.

SAS считывает их неправильно и возвращает каждое поле как 2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A с Type = Character и Format и Informat = $ HEX40.

Одна вещь, которую я попытался сделать, это прочитать это как вместо этого символьная переменная, использующая символьные форматы и информаторы с использованием следующего кода, где mylib - это библиотека, подключенная к базе данных Oracle.

data want;
set mylib.have (obs= 10000);
format raw_data_var char40.;
informat raw_data_var char40.;
run;

Это изменило форматы на символьные, но затем преобразовало ячейки в ********************

Я также пытался найти документацию SAS для чтения двоичных данных, https://documentation.sas.com/?docsetId=lrcon&docsetTarget=p1vu9u7w1ieua7n17973igt2cq3c.htm&docsetVersion=9.4&locale=en, но, к сожалению, я не смог найти что-то полезное, чтобы помочь.

Может кто-то Направьте меня в правильном направлении, чтобы читать в необработанном виде данных, используя шаг данных или про c sql?

Спасибо

1 Ответ

1 голос
/ 06 февраля 2020

Вы можете использовать Proc SQL с проходным запросом, использующим функцию Oracle RAWTOHEX

proc sql;
  connect using mylib;
  create table want as 
  select 
    a,b,c,input(rawhexed,$HEX32000.) as raw16kchars 
  from
    connection to mylib
    (
        select a,b,c,rawtohex(myraw) as rawhexed
        from have /* oracle side reference */
    )
  ;


quit;
...