2013-08-22 23 views
6

Tôi đã có một truy vấn SQL rất cơ bản mà tôi muốn để có thể xem trong R.Chạy truy vấn SQL thông qua RStudio qua RODBC: Làm cách nào để xử lý Bảng băm?

Vấn đề là, tôi cần để có thể tham khảo một #table:

select 
    RAND(1) as random 
    into #test 

    select * from #test 

Điều này có thể, hoặc tôi sẽ cần phải tạo bảng vĩnh viễn, hoặc tìm một số công việc khác xung quanh?

Tôi hiện làm điều này thông qua một kịch bản RODBC cho phép tôi để chọn tập tin SQL để chạy:

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

Bạn có lời khuyên nào về làm thế nào tôi có thể sử dụng #tables trong Scrips SQL của tôi trong R?

Cảm ơn trước!

+0

Bạn có nên chuyển truy vấn SQL của mình dưới dạng chuỗi ký tự không? '(x <-" #tralala ")'. –

+0

Chức năng dán tạo chuỗi. Làm thế nào bạn sẽ đi về việc này? –

+0

'dán (" # "," tralala ", sep =" ")'. Bạn "tralala" cũng có thể là một biến. Xem '? Dán' hoặc' trợ giúp (dán) '. –

Trả lời

0

tôi sử dụng #tables bằng cách tách truy vấn của tôi thành hai phần, nó sẽ trả về ký tự (0) nếu tôi thích:

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

select * from #test 
")) 

Vì vậy, thay vào đó tôi sẽ sử dụng:

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

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

Dường như với làm việc tốt nếu bạn gửi một truy vấn để thực hiện #table và một giây để truy xuất nội dung. Tôi cũng đã thêm vào bảng thả #test; với truy vấn của tôi, điều này đảm bảo rằng chưa có #test. Nếu bạn cố viết tên #table đã có sẵn, bạn sẽ gặp lỗi

0

Khi bạn sử dụng bảng tạm thời, SQL sẽ xuất ra một thông điệp với số hàng trong bảng. R không biết phải làm gì với thông báo này. Nếu bạn bắt đầu truy vấn SQL của mình với SET NOCOUNT ON SQL sẽ không xuất ra thông báo đếm.

Các vấn đề liên quan