Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用WRDS MSRB数据集上的SQL查询从多个CUSIP检索数据_Sql_R_Postgresql_Wrds - Fatal编程技术网

使用WRDS MSRB数据集上的SQL查询从多个CUSIP检索数据

使用WRDS MSRB数据集上的SQL查询从多个CUSIP检索数据,sql,r,postgresql,wrds,Sql,R,Postgresql,Wrds,我对SQL非常陌生,所以如果这是一个简单的问题,我很抱歉,我在搜索时没有找到任何东西,但我可能错过了明显的搜索词 我正在尝试下载一组市政债券的所有交易数据,我有一个CUSIP列表,当前存储为.txt文件,每行一个CUSIP。WRDS的在线版本允许用户上传这样一个.txt文件来检索他们的数据 我想在R中自动化这个过程,并遵循WRDS指南在R中设置SQL查询。最终,我将使用以下内容: res <- dbSendQuery(wrds, "select *

我对SQL非常陌生,所以如果这是一个简单的问题,我很抱歉,我在搜索时没有找到任何东西,但我可能错过了明显的搜索词

我正在尝试下载一组市政债券的所有交易数据,我有一个CUSIP列表,当前存储为.txt文件,每行一个CUSIP。WRDS的在线版本允许用户上传这样一个.txt文件来检索他们的数据

我想在R中自动化这个过程,并遵循WRDS指南在R中设置SQL查询。最终,我将使用以下内容:

res <- dbSendQuery(wrds, "select *
               from msrb.msrb
               where cusip IN ???")
data <- dbFetch(res, n=-1)
dbClearResult(res)
data

res我认为有两种有效的方法可以通过编程在SQL中(…)
中执行
,还有一种方法很流行,但有风险(我通常不鼓励这样做)

  • 使用参数绑定。这在某种主观限度内是可行的;DBI
    DBI
    允许绑定的参数数量可能有一个真正的限制,但我不知道;我不知道SQL实现是否经常限制可以在(…)
  • 语句中的literal
    中输入的值的数量(我刚刚用5000测试了PG11,没问题)。在某种程度上,使用下面的选项2可能更有效或更可取。然而,如果我们讨论的是这么多的订单,那么试试这个


    cusips谢谢!我有260000个CUSIP,它们确实遇到了参数绑定限制。我无法使用dbWriteTable,因为WRDS是只读的,我没有尝试第三个,因为我对这一点完全陌生,不想冒意外注入的风险……但我自己编写了一个for循环,分割CUSIP,只运行多参数绑定查询。成功了!仅供参考,通常即使您的连接可能是只读的,您仍然可以创建临时表,这是“sql演算”中非常特殊的功能。实际上,仔细研究一下,我认为即使你不能写任何永久性的东西,你也应该能够创建单实例临时表。很高兴有帮助,如果它奏效,请考虑接受答案。