Archivio dell'autore: Alfonso

Alfonso

Informazioni su Alfonso

Laurenado nel C.d.L. in Ing.Informatica, sono appassionato di tecnologia ed esperto di editing foto e video.

Connessione di R ad SQL Server 2012/2014

Uno dei più importanti aspetti di R è la gestione dei dati, i quali possono essere contenuti in diverse fonti, siano essi file csv, data base, file excel o altro ancora.

In questa breve guida verrà illustrato come effettuare la connessione tra R e Microsoft SQL Server in modo da poter estrarre i dati direttamente da un database usando le istruzioni SQL. L’approccio descritto in questa guida è supportato sia da SQL Server 2012 che dalla più recente versione 2014. È possibile connettersi ad SQL Server in diversi modi, uno dei quali è per mezzo dell’uso di ODBS, che è quello scelto in questa guida.

La prima volta che ci si collega ad un database bisogna effettuare delle operazioni preliminari, che verranno eseguite solo in questa prima occasione, che sono:

  • Creare un ODCB DSN per poter accedere ai dati;
  • Installare i packages necessari in R.

Nella screenshot sottostante viene mostrata una tabella contenente il data set d’interesse, il cui nome nel caso di specie è “TAddizionali”. La tabella fa parte del database nominato “DBTestRAddizionali”. Lo scopo è quello di importare tutti questi dati in R

1

Creazione del DSN

La prima cosa da fare è quella di realizzare DSN utente, da cui recuperare i dati, che fa riferimento al SQL Server usando ODBC”.

1)  Aprire “Strumenti di Amministrazione” e selezionare “ODBS Data Source (64 bit)”

2

2)  Dalla scheda “DSN utente” clickare su “Aggiungi”

3)  Dalla finestra appena apertasi selezionare “SQL Server” nella lista provider

4)  Bisogna ora attribuire un nome ed una descrizione alla sorgente dei dati. È bene tenere a mente questo nome perché sarà necessario più avanti nella procedura. In ultimo si deve forinre il nome del server in cui è installato l’SQL Server. A questo punto è possibile andare “Avanti”

3

5)  Selezionare il modo in cui si intende autenticare all’SQL Server. In questo caso si usa la Sicurezza Integrata, pertanto andiamo “Avanti”

4

 

6)  Si ha ora la possibilità di selezionare il database di default al quale accedere come sorgente dei dati; si sceglie di fare riferimento a “DBTestRAddizionali”. Selezioniamo quindi di andare “Avanti”

5

7)  Nell’ultima finestra che compare si ricordi di clickare su “Test di connessione”, in modo da verificare se effettivamente è possibile stabilire una connessione, e subito dopo si sceglie “Fine”

8)  Il DSN Utente è finalmente stato creato ed è attivo.

6

Installare e caricare RODBC

Il supporto per SQL Server non fa parte dei packages base di R, pertanto è necessario installare il pacchetto “RODBC” dai server CRAN.

1)  Aprire R e della console scrivere: install.packages(“RODBC”)

console

2)  Una volta scaricato ed installato il package “RODBC”, bisogna caricare il package in R così da poter usare tutte le sue funzioni. A tale scopo si digita nella console: library(“RODBC”);

3)  Il package è stato caricato e tutte le sue funzioni sono pronte per essere usate in R.

Connessione di R ad SQL Server

Arrivati a questo punto si è in grado di connettersi al database di SQL Server ed accedere al dataset d’interesse.

1)  Quando si vuole richiamare il database bisogna innanzitutto stabilire una connessione col database, e dopo aver eseguito tutte le operazioni necessarie la connessione va chiusa. In R i comandi, compresi nel pacchetto “RODBC” sono odbcConnetc()e odbcClose().

8

 

Nello screenshot sopra l’intero contenuto del database è stato attribuito all’oggetto R “prova” attraverso la funzione sqlFetch(), che non fa altro che leggere l’intero contenuto del database. L’assegnazione del contenuto del database alla variabile “prova” ha fatto sì che quest’ultima venisse interpretata da R come un data frame, contenente l’intera struttura del database.

9

A questo punto è possibile trattare “prova” come un’oggetto tipico dell’ambiente R, eseguendo su di esso qual si voglia funzione disponibile nell’ambiente.

Alfonso Izzo