Вставка таблицы базы данных SQL SAS Proc
С помощью Proc SQL от SAS можно ли вставить записи из набора данных SAS в таблицу в открытом соединении с SQL Server? Примерно так (что не работает):
proc sql exec;
connect to sqlservr as DataSrc (server=my-db-srvr database=SasProcSqlTest);
create table Items as select * from connection to DataSrc (
SELECT * FROM tblItem
);
update Items
set Name = Name + Name,
Value * 2;
insert into tblItem (Name, Value)
select Name, Value
from Items;
disconnect from DataSrc;quit;run;
quit;
run;
2 ответа
Насколько мне известно, использование прохода через SQL ограничивает вас на сервере базы данных. Документация SAS гласит, что предпочтительно создать ссылку на библиотеку в базе данных, а затем обрабатывать таблицы базы данных точно так же, как таблицы SAS. В вашем случае это означает просто обычный процесс sql. Это должно работать по крайней мере в последних версиях SAS, но для больших таблиц не является оптимальным.
Что мы сделали, чтобы обойти это
- Создайте таблицу во временной базе данных - таблица не должна быть специфичной для сессии
- Массовая загрузка данных из SAS в созданную таблицу с использованием процедуры добавления
- Сделать сквозное обновление
- Оставьте таблицу в темп дБ.
Вы можете делать то, что вы хотите в открытом соединении..
создать связанное имя библиотеки..
libname datasrc_lib sqlservr server=my-db-srvr database=SasProcSqlTest;
proc sql exec;
connect to sqlservr as DataSrc (server=my-db-srvr database=SasProcSqlTest);
create table Items as select * from connection to DataSrc (
SELECT * FROM tblItem
);
update Items
set Name = Name + Name,
Value * 2;
insert into datasrc_lib.some_temp_table select * from items;
execute( insert into tblItem where select * from some_temp_table ) by DataSrc ;
execute( drop table some_temp_table ) by DataSrc ;
disconnect from DataSrc;quit;run; quit; run;
Приведенный выше псевдокод должен дать вам представление о том, как он должен работать. Вам также может понадобиться создать "some_temp_table" в proc sql proc или иметь постоянную промежуточную таблицу.