6

我有一个非常基本的 SQL 查询,希望能够在 R 中查看。

问题是,我需要能够引用#table:

    select
    RAND(1) as random
    into #test

    select * from #test

这可能吗,还是我需要创建永久表,或找到其他解决方法?

我目前通过 RODBC 脚本执行此操作,该脚本允许我选择要运行的 SQL 文件:

    require(RODBC)
    sql.filename <- choose.files('T:\\*.*')
    sqlconn <- odbcDriverConnect("driver={SQL Server};Server=SERVER_NAME;Trusted_Connection=True;")
    file.content <- readLines(sql.filename)
    output <- sqlQuery(sqlconn, paste(file.content[file.content!='--'],collapse=' '))
    closeAllConnections()

您对如何在 R 中的 SQL 脚本中使用#tables 有什么建议吗?

提前致谢!

4

2 回答 2

2

当您使用临时表时,SQL 会输出一条包含表中行数的消息。R 不知道如何处理此消息。如果使用SET NOCOUNT ONSQL 开始 SQL 查询,则不会输出计数消息。

于 2015-09-08T15:26:41.000 回答
0

我通过将查询分成两部分来使用#tables,如果我愿意,它会返回字符(0):

sqlQuery(test_conn, paste("
drop table #test;
select
       RAND(1) as random
     into #test

select * from #test
"))

所以我会使用:

sqlQuery(test_conn, paste("
drop table #test;
select
       RAND(1) as random
    into #test
"))

sqlQuery(test_conn,"select * from #test")

如果您发送一个查询来制作#table,然后再发送一个来检索内容,它似乎工作正常。我还添加了删除表#test;对于我的查询,这确保没有#test。如果您尝试写入已经存在的#table 名称,您将收到错误消息

于 2013-09-06T19:55:01.747 回答