我需要在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?
中存在更好的方法感谢您的帮助。
答案 0 :(得分:0)
如果可以,您可能希望使用psql
。它有大量插入设施,RPostgreSQL包可能缺乏。
您仍然可以使用该程序包执行命令来创建表格等。
你当然可以也使用包首先插入一些N行,然后追加N行,直到达到总行数。