通过RPostgreSQL库从{R}导入大数据库到PostgreSQL

时间:2016-10-26 19:19:56

标签: r postgresql rpostgresql

我需要在PostgresSQL中导入10.352.223 KB的数据库。我试图通过R中的RPostgreSQL库来实现它,但我遇到了问题。

我的代码是:

i<-10000

for(a in seq(0,36000000, i)){
  data<-read.table("data.txt",sep="|",dec=",",
                     nrows=i,skip=a,fill=T,
                     colClasses=c(rep("NULL",2),"character",rep("NULL",64),
                                  rep("character",2),rep("NULL",11),
                                  "numeric",rep("NULL",9),"numeric",
                                  rep("NULL",2)))
  colnames(data)<-names
  data$iteration<-rep(a,dim(data)[1])
  dbWriteTable(con,"data",data, append=TRUE )
  print(paste("registry", a, sep = " "))
}

我在注册表469000之前没有问题,但在某些时候我有这个错误:

Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec, :
could not allocate memory (2048 Mb) in C function 'R_AllocStringBuffer'

如果我跳过大量行并阅读某些特定行,我无法理解问题是什么。

我该怎么办?我必须直接使用PosgreSQL代码吗?在R?

中存在更好的方法

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如果可以,您可能希望使用psql。它有大量插入设施,RPostgreSQL包可能缺乏。

您仍然可以使用该程序包执行命令来创建表格等。

你当然可以使用包首先插入一些N行,然后追加N行,直到达到总行数。