2013-08-22 8 views
6

Mam bardzo podstawowe zapytanie SQL, które chciałbym, aby móc przeglądać w R.Uruchamianie zapytania SQL za pomocą RStudio przez RODBC: Jak radzić sobie z tabelami Hash?

Kłopot w tym, że muszą być w stanie odwołać się do #table:

select 
    RAND(1) as random 
    into #test 

    select * from #test 

Czy to jest możliwe, czy też będę potrzebował tworzyć trwałe tabele lub znajdować inne prace?

I obecnie to zrobić za pomocą skryptu RODBC który pozwala mi wybrać plik, aby uruchomić 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() 

Czy masz jakieś rady jak mogę wykorzystać #tables w moich scrips SQL w R?

Z góry dziękuję!

+0

Nie należy przekazywać zapytania SQL jako ciąg znaków? '(x <-" #tralala ")'. –

+0

Funkcja wklejania tworzy ciąg znaków. Jak byś to zrobił? –

+0

'wklej (" # "," tralala ", sep =" ")'. Ty "tralala" również może być zmienną. Zobacz '? Paste' lub' help (paste) '. –

Odpowiedz

0

używam #tables oddzielając moje zapytanie na dwie części, zwraca znak (0) jeśli ja lubię:

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

select * from #test 
")) 

Więc zamiast użyłbym:

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

sqlQuery(test_conn,"select * from #test") 

Wydaje działa dobrze, jeśli wysyłasz jedną kwerendę, aby utworzyć # tabelę, a drugą, aby pobrać zawartość. Dodałem także w drop table #test; na moje zapytanie, upewnia się, że nie ma już # testu. Jeśli spróbujesz napisać do nazwy #table, która już tam jest, otrzymasz komunikat o błędzie:

0

Podczas korzystania z tabel tymczasowych SQL wyświetla komunikat z liczbą wierszy w tabeli. R nie wie, co zrobić z tym komunikatem. Jeśli rozpoczniesz zapytanie SQL z SET NOCOUNT ON SQL nie wyświetli komunikatu zliczania.

Powiązane problemy