Как импортировать CSV в sqlite с помощью RSqlite? - PullRequest
9 голосов
/ 02 декабря 2010

В качестве вопроса я обнаружил, что могу использовать .import в оболочке sqlite, но, похоже, он не работает в среде R, какие-либо предложения?

Ответы [ 2 ]

19 голосов
/ 02 декабря 2010

Вы можете использовать read.csv.sql в пакете sqldf. Это только одна строка кода для чтения. Предполагая, что вы хотите создать новую базу данных, testdb, а затем прочитать в нее файл, попробуйте следующее:

# 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")

Выше используется sqldf, который использует RSQLite. Вы также можете использовать RSQLite напрямую. См. ?dbWriteTable в RSQLite. Обратите внимание, что могут возникнуть проблемы с окончанием строки, если вы сделаете это непосредственно с dbWriteTable, с которым sqldf будет автоматически обрабатывать (обычно).

Если вы намеревались прочитать файл в R сразу после считывания его в базу данных, и вам не нужна база данных после этого, тогда смотрите:

http://code.google.com/p/sqldf/#Example_13._read.csv.sql_and_read.csv2.sql

2 голосов
/ 02 декабря 2010

Я склонен делать это с пакетом sqldf: Быстрое чтение очень больших таблиц в виде фреймов данных в R

Имейте в виду, что в приведенном выше примере я читал csv в temp sqliteдб.Вам, очевидно, нужно будет изменить этот бит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...