Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

R . में SQL सर्वर संग्रहीत कार्यविधि से लौटाए गए एकाधिक परिणाम सेट को कैसे पढ़ें?

RODBC में संग्रहीत कार्यविधि से एकाधिक रिकॉर्डसेट पुनर्प्राप्त करने की सुविधा नहीं हो सकती है। हालाँकि, Windows ADO में NextRecordSet() है। तरीका। RDCOMClient . का उपयोग करके ADO को R एक COM इंटरफ़ेस कॉल करने पर विचार करें पुस्तकालय (निश्चित रूप से आप विंडोज़ के लिए आर का उपयोग करते हैं)। एडीओ के कनेक्शन ऑब्जेक्ट में, आप उसी कनेक्शन स्ट्रिंग को पास करते हैं जैसा आपने आरओडीबीसी में किया था।

नीचे एडीओ के GetRows()<के साथ क्वेरी परिणाम पुनर्प्राप्त करता है /ए> जो R में नेस्टेड सूचियों के रूप में अनुवादित द्वि-आयामी सरणी देता है।

एसक्यूएल सर्वर (संग्रहीत प्रक्रिया)

CREATE PROCEDURE MultipleResults 
AS    
BEGIN
    SET NOCOUNT ON;
    SELECT * FROM Table1;
    SELECT * FROM Table2;
END

आर (एडीओ कॉल)

library(RDCOMClient)

conn <- COMCreate("ADODB.Connection")
rst <- COMCreate("ADODB.Recordset")

conn$Open("driver={SQL Server};server=server;database=db;trusted_connection=yes;")

# FIRST QUERY RESULT
rst$Open("MultipleResults", conn)
dfList1 <- rst$GetRows()    
# RETRIEVE COLUMN NAMES
dfnames1 <- vapply(c(0:(rst[['Fields']]$Count()-1)), 
                   function(i) (rst$Fields(i)$Name()), character(1))

# SECOND QUERY RESULT
rst <- rst$NextRecordset()
dfList2 <- rst$GetRows()    
# RETRIEVE COLUMN NAMES
dfnames2 <- vapply(c(0:(rst[['Fields']]$Count()-1)), 
                   function(i) (rst$Fields(i)$Name()), character(1))   
# CLOSE OBJECTS
rst$Close(); conn$Close()

# FREE RESOURCES
rst <-  conn <- NULL
rm(rst, conn)
gc()

# CONVERT NESTED LISTS TO DATAFRAMES    
dfList1 <- lapply(dfList1, function(x) setNames(data.frame(x), dfnames1))    
df1 <- do.call(rbind, dfList1)

dfList2 <- lapply(dfList2, function(x) setNames(data.frame(x), dfnames2))      
df2 <- do.call(rbind, dfList2)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में डिफ़ॉल्ट बाधा नाम क्या है?

  2. SQL:लाइक बनाम कंटेन्स - भिन्न परिणाम

  3. SQL सर्वर एकत्रीकरण के साथ यादृच्छिक (या पहले) मान चुनें

  4. संग्रहीत प्रक्रिया में पैरामीटर के रूप में एक्सएमएल (एसक्यूएल सर्वर)

  5. T-SQL का उपयोग कर SQL सर्वर में किसी तालिका के लिए स्तंभ विशेषाधिकार प्राप्त करें:sp_column_privileges