作为问题,我发现我可以在sqlite shell中使用.import
,但似乎它在R环境中不起作用,有什么建议吗?
答案 0 :(得分:19)
您可以在read.csv.sql
包中使用sqldf
。只读一行代码。假设您要创建一个新数据库,测试db,然后将文件读入其中,请尝试:
# 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。请参阅RSQLite中的?dbWriteTable
。请注意,如果直接使用dbWriteTable
sqldf
将自动处理(通常),则可能会出现行结尾问题。
如果您打算在将文件读入数据库后立即将文件读入R并且之后您真的不需要数据库,那么请参阅:
http://code.google.com/p/sqldf/#Example_13._read.csv.sql_and_read.csv2.sql
答案 1 :(得分:2)
我倾向于使用sqldf包:Quickly reading very large tables as dataframes in R
请记住,在上面的示例中,我将csv读入temp sqlite db。你显然需要改变这一点。