Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.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
R将所需变量从ODBC/HANA连接传递到sql语句_Sql_R_Odbc_Hana_Rodbc - Fatal编程技术网

R将所需变量从ODBC/HANA连接传递到sql语句

R将所需变量从ODBC/HANA连接传递到sql语句,sql,r,odbc,hana,rodbc,Sql,R,Odbc,Hana,Rodbc,我有一张桌子,我正试图用我通常的方法调用它 sql <- 'SELECT TOP 10 * FROM "_SYS_BIC"."data-path.self-service.DOIP/table_name"' df <- dbGetQuery(jdbcConnection, sql) 我一直试图用where子句将IP_ExtractionWeekFrom插入sql语句,但没有成功 param1 <- 201943 sql <- 'SELECT TOP

我有一张桌子,我正试图用我通常的方法调用它

sql <- 'SELECT TOP 10 *
         FROM "_SYS_BIC"."data-path.self-service.DOIP/table_name"'

df <- dbGetQuery(jdbcConnection, sql)
我一直试图用where子句将IP_ExtractionWeekFrom插入sql语句,但没有成功

param1 <- 201943

sql <- 'SELECT TOP 10 *
         FROM "_SYS_BIC"."ccf-edw.self-service.DOIP/R_CA_B_DemandPlan" where
         "$$IP_ExtractionWeek$$" = ?'

SpringVisit <- dbGetQuery(jdbcConnection, sql, param1)

param1考虑在R中集成参数,并正确处理标识符的双引号和文字的单引号,从而维护工作表查询

此外,旧的
('PLACEHOLDER'=('',)
语法不支持参数化

相反,如中所述,请使用
占位符。“=>?
语法


param1下面带有硬编码param值的查询是否在SAP/hana控制台或IDE或工作台(即R之外)中工作?我们本身没有。在我加入之前,大多数数据都是通过我们的Tableau/HANA连接提取的,它的sql显示为“ccf edw.self-service.DOIP::Q_CA_B_DemandPlan”(“占位符”=(“$$IP_ExtractionWeekFrom$$”,“201943”)中的
SELECT*,“占位符”=(“$$IP_ExtractionWeekTo$$”,“201943”)“ccf_edw_self_service_DOIP_Q_CA_B_DemandPlan”在哪里(10)
您尝试在R中进行查询了吗?结果是什么?当然,语法错误
参数1为什么您要双重引用
“占位符”
“$$IP_ExtractionWeekTo$”
?双引号在SQL中表示特定的内容,不能与R中的单引号互换。保持原样,将整个SQL包装在R变量的双引号中,然后用反斜杠转义任何SQL双引号。在第一个
(SAP DBTech JDBC:[257]:SQL语法错误:附近的语法不正确“?”:第3行第59列(位置148处))
非常感谢这个链接,我一直在想这个区别。将JDBC连接到模式,并获得了接近“”的语法错误。这实际上是一个不同的错误。您可能无法参数化。请尝试在
dbGetQuery
中用不带参数的实际数字替换
,然后查看查询是否运行。是的!我们开始了。非常感谢。新的sql语句读作
sql@jarichardson,请查看SAP HANA专家显示参数时编辑的解决方案新的占位符语法支持插入。
param1 <- 201943

sql <- 'SELECT TOP 10 *
         FROM "_SYS_BIC"."ccf-edw.self-service.DOIP/R_CA_B_DemandPlan" where
         "$$IP_ExtractionWeek$$" = ?'

SpringVisit <- dbGetQuery(jdbcConnection, sql, param1)
sql <- "SELECT TOP 10 * 
        FROM \"ccf-edw.self-service.DOIP::R_CA_B_DemandPlan\"( 
             PLACEHOLDER.\"$$IP_ExtractionWeekFrom$$\", ?), 
             PLACEHOLDER.\"$$IP_ExtractionWeekTo$$\", ? ) 
        )\"ccf-edw.self-service.DOIP::R_CA_B_DemandPlan\" 
        WHERE (1 <> 0)"