使用R将多个csv文件导入到postgresql数据库中(内存错误)

贡尼

我正在尝试将数据集(包含许多csv文件)导入r,然后将数据写入postgresql数据库的表中。

我已成功连接到数据库,创建了一个导入csv文件的循环并尝试导入。然后R返回错误,因为我的电脑内存不足。

我的问题是:有没有一种创建循环的方法,该循环一个接一个地导入文件,将它们写到postgresql表中,然后再删除它们?这样,我就不会用完内存。

返回内存错误的代码:

`#connect to PostgreSQL database
db_tankdata <- 'tankdaten'  
host_db <- 'localhost'
db_port <- '5432'
db_user <- 'postgres'  
db_password <- 'xxx'
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, dbname = db_tankdata, host=host_db, 
                 port=db_port, user=db_user, password=db_password)

#check if connection was succesfull
dbExistsTable(con, "prices")

#create function to load multiple csv files
import_csvfiles <- function(path){
  files <- list.files(path, pattern = "*.csv",recursive = TRUE, full.names = TRUE)
  lapply(files,read_csv) %>% bind_rows() %>% as.data.frame()
    }


#import files
prices <- import_csvfiles("path...")
dbWriteTable(con, "prices", prices , append = TRUE, row.names = FALSE)`

预先感谢您的反馈!

伦·格雷斯基

如果将更lapply()改为包括匿名功能,则可以读取每个文件并将其写入数据库,从而减少所需的内存量。由于lapply()充当隐式for()循环,因此您不需要额外的循环机制。

import_csvfiles <- function(path){
     files <- list.files(path, pattern = "*.csv",recursive = TRUE, full.names = TRUE)
     lapply(files,function(x){ 
          prices <- read.csv(x) 
          dbWriteTable(con, "prices", prices , append = TRUE, row.names = FALSE)
          })
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当我使用`sequel`将数据从csv文件导入到postgresql中时出现错误

从Windows中的.csv文件将数据导入到mongodb数据库中

一个Perl脚本,可将多个CSV文件导入到MySQL数据库中

将CSV导入到MongoDB数据库

将多个分隔的文本文件导入到SQL Server数据库中并自动创建表

如何将备份文件大量导入到Postgresql数据库

如何使用pandas和pyodbc将CSV文件数据导入到我的数据库中?

CSV文件将不会导入到mysql数据库中

将转储/ SQL文件导入到我的Linode上的PostgreSQL数据库中

如何将一张excel文件导入到access数据库中?

将数据从 csv 文件导入到 R

如何通过Java代码将CSV文件数据导入到PostgreSQL表中?

将P12证书导入到NSS数据库中(使用别名)

使用sql将数据从文件csv导入到Oracle

如何解析文件名,并使用shellscript将数据导入到csv文件中?

如何将跳过“主键”列的文本文件的数据导入到MySQL数据库中

SSIS:使用文件上次修改日期条件将数据从excel导入到sql server数据库

将BACPAC文件导入到Azure中以创建新数据库,但是数据库级用户似乎未正确导入?

如何将数据从txt文件导入到MySQL数据库

Laravel:从 csv 文件导入到带有额外列的数据库

发出自动将CSV导入到RSQLite数据库的问题

WordPress:将MySQL数据库导入到MariaDB

将值从数据库导入到选择

从csv导入到asp.net中的mysql数据库中删除双引号(“”)

将文本文件导入到 DataGrid 然后保存到数据库

Rails –如何将文件从本地主机导入到Heroku数据库

将多个csv文件导入到pandas中并串联到一个DataFrame中

从.csv列字段中删除逗号并导入到数据库

将数据库中的日期导入到Excel工作表中