Jak zaimportować CSV do sqlite za pomocą RSqlite?
Jako pytanie stwierdziłem, że mogę używać .import
w powłoce sqlite, ale wygląda na to, że nie działa w środowisku R, jakieś sugestie?
2 answers
Możesz użyć read.csv.sql
W OPAKOWANIU sqldf
. Jest to tylko jedna linijka kodu do odczytu. Zakładając, że chcesz utworzyć nową bazę danych, testingdb, a następnie wczytać do niej plik, spróbuj tak:
# 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")
Powyższe używa sqldf, który używa RSQLite. Możesz również używać rsqlite bezpośrednio. Zobacz ?dbWriteTable
w RSQLite. Zauważ, że mogą wystąpić problemy z zakończeniami linii, jeśli zrobisz to bezpośrednio z dbWriteTable
, które sqldf
będzie obsługiwać automatycznie (Zwykle).
Jeśli twoim zamiarem było wczytanie pliku do R od razu po wczytaniu go do bazy danych i tak naprawdę nie potrzebujesz bazy danych po tym, Zobacz:
Http://code.google.com/p/sqldf/#Example_13._read.csv.sql_and_read.csv2.sql
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-12 15:00:41
Zwykle robię to z pakietem sqldf: Szybkie czytanie bardzo dużych tabel jako ramek danych w R
Należy pamiętać, że w powyższym przykładzie odczytałem csv do temp SQLite db. Musisz to zmienić.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:01:43