问题自动将CSV导入RSQLite数据库
我试图自动将CSV文件写入RSQLite数据库。问题自动将CSV导入RSQLite数据库
我这样做是通过索引csvFiles
来实现的,这是存储在环境中的data.frame变量列表。
我似乎无法找出为什么当我手动输入,但不是当我试图指数name
和value
领域我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]
这里是csvFiles
的dput
输出:
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