【问题标题】:Easy way to Copy-Paste SQL Query into R将 SQL 查询复制粘贴到 R 中的简单方法
【发布时间】:2018-01-22 18:42:14
【问题描述】:

我正在尝试使用odbc 将我的所有数据处理从 SQL 移动到 R 中,因为无论如何我都是在这里进行所有数据清理/分析的。在将查询移至 R 时,我无法找到一种简单的方法来将字符串复制粘贴为可读格式。假设我在 SQL 中有以下查询:

SELECT
col1,
sum(col2) sum_col2,
col3

FROM
db.table1 t1

WHERE
col1 > 0
AND col6 BETWEEN .5 AND 1.76

GROUP BY 
col1,
col3

如果我要尝试将其分配给 R 中的 querystring 变量,我会将其放在 paste 中,但即便如此我也必须通过并用逗号分隔每一行正确通过getDBQuery。有没有人找到一种不需要太多修复的优雅方法将 SQL 语法复制并粘贴到 R 中? paste 中是否有允许您忽略新行 '\n' 的选项,或者我可以创建自定义函数吗?

谢谢

【问题讨论】:

  • 我不清楚为什么你不能把你的查询用引号括起来然后传递给querystring。这是我经常做的事情。也许您希望在 R 代码中看起来像这样的示例会有所帮助。
  • 因此,如果将上述内容包装在paste("sql_query") 中,则变量querystring 由于空格而具有所有'\n'。而且(我相信)这就是导致我的查询通过的问题
  • 如果\n 引起了问题,我会感到惊讶。我的查询充满了这些。它们应该作为空格传递,SQL 是不可知的。
  • 我会将 SQL 代码放入一个文本配置文件(每个查询一个文件)并通过my_query_string <- readLines("my_query_file.sql") 读取它,因此无需更改任何内容。请注意,这可能是一个安全问题(通过编辑文件进行 SQL 代码注入 ;-)

标签: r


【解决方案1】:

正如 Benjamin 在 cmets 中解释的那样,您可以简单地将文本放在引号中。示例:

library(sqldf)

df = data.frame(x=c(1,2,3,4,5),y=c(2,2,3,3,3))
my_query = 'SELECT DISTINCT
      y FROM
      df
      where x>3'

df2 <- sqldf(my_query)

【讨论】:

  • 好吧,我让它工作了,我想令人沮丧的是你必须突出显示整个查询才能工作。当我嵌入paste 时,它不起作用。谢谢
【解决方案2】:

还有一些工具可以从普通的 SQL 中生成适当的 Java、C#、VB 等语句。只需剪切和粘贴。 我为此目的编写的格式化程序是 SQLinForm,根据您正在使用的环境,它有几个免费的格式化程序。链接是enter link description here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-23
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多