R - Πρόσβαση σε μια βάση δεδομένων με το package RODBC ...

Μπορεί δουλεύοντας με την R να χρησιμοποιούμε σε πολύ μεγάλο βαθμό ως data sources διάφορα flat files και γενικότερα αδόμητη πληροφορία αλλά θα έρθει η στιγμή εκείνη που θα χρειαστεί να κάνουμε την R να "μιλήσει" με μια ή περισσότερες βάσεις δεδομένων... Υπάρχουν διάφορα packages που παρέχουν τη διεπαφή μεταξύ της R και μιας συγκεκριμένης βάσης δεδομένων όπως το RMySQL ή το ROracle, υπάρχει όμως ένα package το οποίο δεν database specific αλλά υποστηρίζει τη διεπαφή με όλες τις βάσεις δεδομένων, συμπεριλαμβανομένων του SQL Server και της DB2, αρκεί να υπάρχει ένα σχετικό ODBC connection...

Το package αυτό ονομάζεται RODBC και μπορείτε να το βρείτε και να το εγκαταστήσετε από το CRAN... Είναι πολύ απλό και straightforward στην χρήση του, τα βασικά functions του μπορείτε να τα δείτε κι εδώ... Όπως θα δείτε, δίνει δυνατότητες πλήρους manipulation της βάσης (insert, update, delete) κι όχι μόνο ανάγνωση των δεδομένων... Το χρησιμοποίησα στα πλαίσια ενός project που απαιτούσε την χρήση ενός μεγάλου όγκου δεδομένων τα οποία βρίσκονται σε μια DB2 στημένη πάνω σε ένα σύστημα AS/400 και λειτούργησε άψογα, με πολύ καλό performance... Το script που χρησιμοποίησα ήταν κάπως έτσι:


Για να εξηγήσω λίγο τι έχω κάνει, έχω περάσει τα credentials του χρήστη που χρησιμοποιώ για να συνδεθώ στη βάση σε ένα tab delimited αρχείο με συγκεκριμένη γραμμογράφηση και αφού τα διαβάσω τα περνάω σε variables που χρησιμοποιώ μετά στο connection string... Επίσης, δεν έχω περάσει το SQL query απευθείας στην function sqlQuery, προτίμησα λόγω του μεγέθους του που θα κατέστρεφε την εικόνα του κώδικα και θα τον έκανε πολύ δυσανάγνωστο, να το έχω σε ένα txt αρχείο το οποίο διαβάζω με την readLines και κατόπιν δημιουργώ το query σαν ένα μεγάλο string... Εδώ θα χρειαστεί λίγο προσοχή με τα spaces και τα line breaks στο πως θα περάσετε τον SQL κώδικα στο txt αρχείο, θυμηθείτε ότι δημιουργούμε ένα string που θα πρέπει να μπορεί να το κάνει parse η SQL...

Θυμηθείτε να κλείνετε πάντα το connection όταν τελειώνετε τη δουλειά σας, είναι σημαντικό για να μην προκαλέσετε καθυστερήσεις και προβλήματα στη βάση...

Ελπίζω να βρείτε χρήσιμο το RODBC, καλή δουλειά!

Σχόλια