2013-08-22 11 views
6

Ho una query SQL di base che mi piacerebbe essere in grado di visualizzare in R.Esecuzione di query SQL tramite RStudio tramite RODBC: Come faccio a gestire le tabelle hash?

Il problema è che ho bisogno di essere in grado di fare riferimento a un #table:

select 
    RAND(1) as random 
    into #test 

    select * from #test 

È possibile, o dovrò creare tabelle permanenti o trovare qualche altro lavoro in giro?

Attualmente farlo tramite uno script RODBC che mi permette di scegliere quale file SQL da eseguire:

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() 

Avete qualche consiglio su come posso utilizzare #tables nei miei scrips SQL in R?

Grazie in anticipo!

+0

Non dovresti passare la query SQL come stringa di caratteri? '(x <-" #tralala ")'. –

+0

La funzione incolla crea la stringa. Come faresti a fare questo? –

+0

'paste (" # "," tralala ", sep =" ")'. Anche tu "tralala" puoi essere una variabile. Vedi '? Paste' o' help (incolla) '. –

risposta

0

Io uso #tables separando la mia domanda in due parti, restituisce il carattere (0) se mi piace:

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

select * from #test 
")) 

Così, invece vorrei utilizzare:

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

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

sembra funziona bene se si invia una Query per rendere il #table, e un secondo per recuperare il contenuto. Ho anche aggiunto nella tabella drop # test; alla mia domanda, questo assicura che non ci sia già un # test. Se si tenta di scrivere su un nome #table già presente, verrà visualizzato un errore

0

Quando si utilizzano le tabelle temporanee, SQL emette un messaggio con il numero di righe nella tabella. R non sa cosa fare con questo messaggio. Se si inizia la query SQL con SET NOCOUNT ON SQL non verrà emesso il messaggio di conteggio.

Problemi correlati