使用RODBC进行并行数据库调用

时间:2011-11-23 15:58:36

标签: sql r parallel-processing rodbc

我正在运行大约3 * 10 ^ 6行和11列的面板数据。这些数据存储在SQL数据库中(我使用的数据是更大的数据集的子集)。我想处理数据块(每个日期分开)而不是一次性导入整个事物,但是我必须在每个块上运行的操作是计算密集型的,所以我想使用 foreach 包裹。

但是,我遇到了并行运行sql调用的一些问题。如果我做一个简单的调用,如(sqlQuery(channel, "select 1")),我可以并行执行。如果我做一个更复杂的语句,我会收到SIGPIPE错误。还有其他人遇到过类似的问题吗?

1 个答案:

答案 0 :(得分:1)

您没有告诉我们您使用的数据库。在与RODBC连接的SQLServer上,如果已通过使用事务成功完成此操作。

channel = odbcConnect(database)
odbcSetAutoCommit(channel,FALSE)
# Make requests here
odbcEndTran(channel,TRUE) 

我不确定当你只有你的情况下的阅读请求时这是否也会有所帮助,但它可能值得一试,因为它只有两个额外的行。我询问了服务器,因为在ODBC下,事务与MSSqlServer很好地协作,而且我和其他人的结果有些不同(但没有努力)。