我有一个相当大的.txt文件~9gb,我想将这个txt文件加载到postgres中.第一行是标题,后跟所有数据.如果我postgres直接复制数据,标题将导致数据类型与我的postgres表不匹配的错误,所以我需要以某种方式删除它.
示例数据:ProjectId,MailId,MailCodeId,prospectid,listid,datemailed,amount,donated,zip,zip4,VectorMajor,VectorMinor,packageid,phase,databaseid,amount2
15,53568419,89734,219906,15,2011-05-11 00:00:00,0,0,90720,2915,NonProfit,POLICY,230,3,1,0
16,84141863,87936,164657,243,2011-03-10 00:00:00,0,0,48362,2523,NonProfit,POLICY,1507,5,1,0
16,81442028,86632,15181625,243,2011-01-19 00:00:00,0,0,11501,2115,NonProfit,POLICY,1508,2,1,0
Run Code Online (Sandbox Code Playgroud)
虽然postgres的COPY函数具有可以忽略第一行的"标题"设置,但它仅适用于csv文件:
copy training from 'C:/testCSV.csv' DELIMITER ',' csv header;
Run Code Online (Sandbox Code Playgroud)
当我尝试在我的txt文件上运行上面的代码时,它会收到一个错误:
copy training from 'C:/testTXTFile.txt' DELIMITER ',' csv header
ERROR: unquoted newline found in data
HINT: Use quoted CSV field to represent newline.
Run Code Online (Sandbox Code Playgroud)
我尝试添加"quote"和"escape"属性,但命令似乎不适用于txt文件:
copy training from 'C:/testTXTFile.txt' DELIMITER ',' csv header quote as E'"' escape as E'\\N';
ERROR: COPY escape must be a single one-byte character
Run Code Online (Sandbox Code Playgroud)
或者,我考虑运行java或创建一个单独的停滞表来删除第一行...但这些解决方案是广泛和耗时的.我将需要加载9gb的数据只是为了删除第一行标题...是否有其他解决方案可以轻松删除txt文件的第一行,以便我可以将数据加载到我的postgres数据库中?
有没有办法在大(约10gb)xdf(革命R格式)文件上运行随机森林?显然,我可以尝试rxReadXdf并将其转换为数据帧...但我的机器只有8GB内存,我可能会在未来处理更大的数据集.例如,使用foreach循环,我想在我的四核机器上运行1000棵树:
#'train.xdf" is a 10gb training data set
rf<- foreach(ntree=rep(250, 4), .combine=combine,
.packages='randomForest') %do%
randomForest(amount2~.,data="train", ntree=ntree, importance=TRUE,
na.action=na.omit, replace=FALSE)
Run Code Online (Sandbox Code Playgroud)
但randomForest无法接收"train"(xdf)文件.有没有办法直接在xdf上运行随机林而不读入数据帧?
干杯,agsub