使用glue::SQL将SQL语法参数传递到R中



我目前正在尝试使用glue::sql动态创建一个临时表、一个表或一个视图。

我理解并知道如何通过传入R对象作为参数来使用glue构建sql查询,但是:

是否可以传入一个转换为SQL语法的对象来创建表?

例如,我的sqlglue语句如下:

sql_query <- glue::glue_sql(
"create {create_type} some_table as
select * from {`table_name`}
where 
({`table_name`}._start_time >= {start}
and
{`table_name`}._end_time <= {end})
or
({`table_name`}.type == 'internet'
and
{`table_name`}._start_time >= {start}
and
{`table_name`}.end_time <= {end} + 604800)

", 
.con = conn
)

我希望能够传递一个参数,比如'TEMP TABLE' to {create_type},这样它就可以变成:"create TEMP TABLE some_table as...."

我没有看到任何这样做的例子,所以想知道这是否可能?

似乎一个很好的解决方案是使用paste()提前创建一个对象

test <- "TEMP TABLE"
create_sql_line <-paste("create", test) 
sql_query <- glue::glue_sql(
create_sql_line,
" some_table as
select * from {`table_name`}
where 
({`table_name`}._start_time >= {start}
and
{`table_name`}._end_time <= {end})
or
({`table_name`}.type == 'internet'
and
{`table_name`}._start_time >= {start}
and
{`table_name`}.end_time <= {end} + 604800)

", 
.con = conn
)

当您将对象传递到上面创建的glue_sql中时。

工作良好,可以完美地创建SQL语法!

最新更新