我目前正在尝试使用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语法!