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?

Author: Jaap, 2010-12-02

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

 19
Author: G. Grothendieck,
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ć.

 2
Author: JD Long,
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