我有一个包含 5700 万行和 23 列的数据集。有一列包含不同鸟类的物种名称(大约 2000 个唯一名称),我想为每个唯一物种名称提取两列数据(纬度、经度),并将每个物种的纬度/经度数据写入文件物种,以物种名称作为文件名。这需要很长时间才能用 R 来完成,我知道的唯一语言。此任务的适当代码是什么?

我在这里尝试使用一些伪代码来演示我猜测的代码可能是什么样子,大致如下:

FOR i IN 1:unique(species_name)
    SELECT latitude,longitude WHERE species_name=[i]
    WRITE [some code that writes a text file with species name as the file name]
LOOP END;

我想我可以在 OSX 上的终端中做这种事情吗?

编辑 20111211:
这是我在 R 中的工作流程:
 require(RMySQL);
 require(plyr)
 drv <- dbDriver("MySQL")
 con <- dbConnect(drv, user = "asdfaf", dbname = "test", host = "localhost")
 splist <- read.csv("splist_use.csv")
 sqlwrite <- function(spname) {
   cat(spname) g1 <- dbGetQuery(con
     , paste("SELECT col_16,col_18 FROM dat WHERE col_11='"
     , spname, "'", sep="")
     )
   write.csv(g1, paste(spname, ".csv", sep=""))
   rm("g1") }
 l_ply(splist, sqlwrite, .progress="text" )

最佳答案

恕我直言,您能做的最好的事情是使用脚本语言(python、perl、php、shell)并从那里生成文件名和查询。这不是太难,但你必须学习一种不同的语言。 SQL 不适合命令式编程。

关于mysql - SQL 循环读取,然后将数据写入文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8460850/

10-12 17:08
查看更多