2010-10-11 8 views
1

Ceci est ma première tentative de lancer des données entre une base de données MySQL locale et R. Cela dit, j'ai une table créée dans la base de données et je veux y insérer des données. Actuellement, il s'agit d'une table vide (créée avec MySQL Query Browser) et d'un ensemble PK. J'utilise le paquet RODBC (RMySQL me donne des erreurs) et je préfère rester avec cette librairie.RODBC Insert Query

Comment dois-je procéder pour insérer les données d'une trame de données dans cette table? Y at-il une solution rapide ou dois-je:

  1. Créer une nouvelle table temporaire de mon dataframe
  2. Insérer les données
  3. Supprimez la table temporaire

avec commandes séparées? Toute aide très appréciée!

+0

Personnellement, je préfère le package RMySQL. Les erreurs que vous faites référence sont susceptibles de faire avec votre version de libmySQL.dll (vous devez utiliser celui de 5.0 si vous êtes sur Windows). Je suppose que cela me semble plus naturel d'utiliser SQL pour appeler à partir d'une base de données SQL. –

+0

J'utilise également RMySQL et je trouve facile d'utiliser et d'envoyer des requêtes sql dans la syntaxe SQL native au lieu d'avoir des fonctions et des arguments différents pour chaque type de requête comme dans l'exemple donné par Dirk. Je serais intéressé de connaître les avantages de RODBC sur RMySQL. –

Répondre

4

Voir help(sqlSave) dans la documentation du paquet; l'exemple montre

channel <- odbcConnect("test") 
sqlSave(channel, USArrests, rownames = "state", addPK=TRUE) 
sqlFetch(channel, "USArrests", rownames = "state") # get the lot 
foo <- cbind(state=row.names(USArrests), USArrests)[1:3, c(1,3)] 
foo[1,2] <- 222 
sqlUpdate(channel, foo, "USArrests") 
sqlFetch(channel, "USArrests", rownames = "state", max = 5) 
sqlDrop(channel, "USArrests") 
close(channel) 

qui, nous l'espérons, devrait être suffisant pour vous lancer.