问题自动将CSV导入RSQLite数据库

我试图自动将CSV文件写入RSQLite数据库。问题自动将CSV导入RSQLite数据库

我这样做是通过索引csvFiles来实现的,这是存储在环境中的data.frame变量列表。

我似乎无法找出为什么当我手动输入,但不是当我试图指数namevalue领域我dbWriteTable()代码工作完全正常。

### CREATE DB ### 

mydb <- dbConnect(RSQLite::SQLite(),"")

# FOR LOOP TO BATCH IMPORT DATA INTO DATABASE

for (i in 1:length(csvFiles)) {

dbWriteTable(mydb,name = csvFiles[i], value = csvFiles[i], overwrite=T)

i=i+1

}

# EXAMPLE CODE THAT SUCCESSFULLY MANUAL IMPORTS INTO mydb

dbWriteTable(mydb,"DEPARTMENT",DEPARTMENT)

当我运行的循环以上,我给出的这个错误:

"Error in file(file, "rt") : cannot open the connection 

In addition: Warning message:

In file(file, "rt") :

cannot open file 'DEPARTMENT': No such file or directory

# note that 'DEPARTMENT' is the value of csvFiles[1]

这里是csvFilesdput输出:

c("DEPARTMENT", "EMPLOYEE_PHONE", "PRODUCT", "EMPLOYEE", "SALES_ORDER_LINE", 

"SALES_ORDER", "CUSTOMER", "INVOICES", "STOCK_TOTAL")

我研究这个错误,它似乎与我的工作目录有关;然而,我并不真正理解要改变什么,因为我甚至不试图从我的电脑上操作文件,只是我的环境中已经有了data.frames。

请帮忙!

回答:

只需使用get()说法是要传递一个字符串值,当一个数据帧对象的预期。注意您的手动版没有DEPARTMENT引用

# FOR LOOP TO BATCH IMPORT DATA INTO DATABASE 

for (i in seq_along(csvFiles)) {

dbWriteTable(mydb,name = csvFiles[i], value = get(csvFiles[i]), overwrite=T)

}

另外,考虑建立一个名为dataframes的列表,mget和循环的逐元素列表的名称和DF元素之间用Map

dfs <- mget(csvfiles) 

output <- Map(function(n, d) dbWriteTable(mydb, name = n, value = d, overwrite=T), names(dfs), dfs)

以上是 问题自动将CSV导入RSQLite数据库 的全部内容, 来源链接: utcz.com/qa/259246.html

回到顶部