Comment faire pour importer CSV dans sqlite en utilisant RSqlite?
Comme question, j'ai trouvé que je peux utiliser .import dans sqlite, shell, mais il semble qu'il ne fonctionne pas dans la R de l'environnement, des suggestions?
Vous pouvez utiliser read.csv.sql dans le sqldf paquet. C'est une seule ligne de code pour faire la lecture. En supposant que vous voulez créer une nouvelle base de données, testingdb, et puis lire un fichier dedans essayez ceci:
# create a test file
write.table(iris,"iris.csv", sep =",", quote = FALSE, row.names = FALSE)# create an empty database.# can skip this step if database already exists.
sqldf("attach testingdb as new")# or: cat(file = "testingdb")# read into table called iris in the testingdb sqlite database
library(sqldf)
read.csv.sql("iris.csv", sql ="create table main.iris as select * from file",
dbname ="testingdb")# look at first three lines
sqldf("select * from main.iris limit 3", dbname ="testingdb")
Les utilisations ci-dessus sqldf qui utilise RSQLite. Vous pouvez également utiliser RSQLite directement. Voir ?dbWriteTable dans RSQLite. Notez qu'il peut y avoir des problèmes, avec des fins de ligne si vous le faites directement avec dbWriteTable que sqldf traite automatiquement (généralement).
Si votre intention était de lire le fichier en R immédiatement après la lecture dans la base de données et vous n'avez pas vraiment besoin de la base de données après que puis voir:
sqldf est fantastique!!!! Découvrez cette réponse est bien stackoverflow.com/questions/4350131/... mais il supprime le fichier à la fin de la session. de toute façon à la garder? sqldf ne pas supprimer la base de données ou fichier d'entrée dans le code ci-dessus. sqldf supprime une base de données qu'il crée mais sqldf jamais supprime le fichier d'entrée, et ne supprime jamais les bases de données qu'il ne crée pas. Dans ce cas, la base de données n'est pas créé par sqldf lui-même (son créé par le backend SQLite via le attach déclaration - non pas par l'extrémité avant sqldf) donc sqldf ne le supprimera pas. Notez que sqldf est destiné aux ad hoc de manipulation de données d'images, mais si vous vous en occupez l'esprit des bases de données persistantes, alors vous pourriez vouloir utiliser RSQLite, RH2 ou autre base de données de l'interface package directement. C'est une incroyable réponse. Une seule question. Si je veux utiliser sqldf("joindre testingdb comme neuf"), elle doit être postérieure à la bibliothèque(sqldf) droit? Oui, library(sqldf) charge le sqldf paquet qui est nécessaire pour l'utilisation de la sqldf de commande.
Vous pouvez utiliser
read.csv.sql
dans lesqldf
paquet. C'est une seule ligne de code pour faire la lecture. En supposant que vous voulez créer une nouvelle base de données, testingdb, et puis lire un fichier dedans essayez ceci:Les utilisations ci-dessus sqldf qui utilise RSQLite. Vous pouvez également utiliser RSQLite directement. Voir
?dbWriteTable
dans RSQLite. Notez qu'il peut y avoir des problèmes, avec des fins de ligne si vous le faites directement avecdbWriteTable
quesqldf
traite automatiquement (généralement).Si votre intention était de lire le fichier en R immédiatement après la lecture dans la base de données et vous n'avez pas vraiment besoin de la base de données après que puis voir:
http://code.google.com/p/sqldf/#Example_13._read.csv.sql_and_read.csv2.sql
mais il supprime le fichier à la fin de la session. de toute façon à la garder?
sqldf ne pas supprimer la base de données ou fichier d'entrée dans le code ci-dessus. sqldf supprime une base de données qu'il crée mais sqldf jamais supprime le fichier d'entrée, et ne supprime jamais les bases de données qu'il ne crée pas. Dans ce cas, la base de données n'est pas créé par sqldf lui-même (son créé par le backend SQLite via le
attach
déclaration - non pas par l'extrémité avant sqldf) donc sqldf ne le supprimera pas. Notez que sqldf est destiné aux ad hoc de manipulation de données d'images, mais si vous vous en occupez l'esprit des bases de données persistantes, alors vous pourriez vouloir utiliser RSQLite, RH2 ou autre base de données de l'interface package directement.C'est une incroyable réponse. Une seule question. Si je veux utiliser sqldf("joindre testingdb comme neuf"), elle doit être postérieure à la bibliothèque(sqldf) droit?
Oui,
library(sqldf)
charge le sqldf paquet qui est nécessaire pour l'utilisation de lasqldf
de commande.OriginalL'auteur G. Grothendieck
J'ai tendance à le faire avec le sqldf package: Rapidement la lecture très grandes tables comme dataframes dans la R
Garder à l'esprit que, dans l'exemple ci-dessus, j'ai lu le csv en un temp db sqlite. Vous aurez évidemment besoin de changer un peu.
OriginalL'auteur JD Long