Запуск SQL-запроса через RStudio через RODBC: как мне работать с таблицами Hash?

У меня есть очень простой SQL-запрос, который я хотел бы видеть в R.

Проблема в том, что мне нужно иметь возможность ссылаться на #table:

select
 RAND(1) as random
 into #test
 select * from #test

Возможно ли это, или мне нужно создать постоянные таблицы или найти другую работу?

В настоящее время я делаю это через RODBC script, который позволяет мне выбрать, какой файл SQL запускаться:

require(RODBC)
 sql.filename <- choose.files('T:\\*.*')
 sqlconn <- odbcDriverConnect("driver={SQL Server};Server=SERVER_NAME;Trusted_Connection=True;")
 file.content <- readLines(sql.filename)
 output <- sqlQuery(sqlconn, paste(file.content[file.content!='--'],collapse=' '))
 closeAllConnections()

Есть ли у вас какие-либо советы о том, как я могу использовать #tables в своих SQL-скриптах в R?

Спасибо заранее!

2 ответа

При использовании временных таблиц SQL выводит сообщение с количеством строк в таблице. R не знает, что делать с этим сообщением. Если вы начинаете свой SQL-запрос с помощью SET NOCOUNT ON, SQL не выводит сообщение счётчика.


Я использую #tables, разделяя мой запрос на две части, он возвращает символ (0), если мне нравится:

sqlQuery(test_conn, paste("
drop table #test;
select
 RAND(1) as random
 into #test
select * from #test
"))

Поэтому вместо этого я бы использовал:

sqlQuery(test_conn, paste("
drop table #test;
select
 RAND(1) as random
 into #test
"))
sqlQuery(test_conn,"select * from #test")

Кажется, что это нормально, если вы отправляете один запрос, чтобы сделать #table, а второй - для получения содержимого. Я также добавил в drop table #test; по моему запросу это гарантирует, что еще нет #test. Если вы попытаетесь написать имя #table, которое уже существует, вы получите сообщение об ошибке

licensed under cc by-sa 3.0 with attribution.