如何将nvarchar从T-SQL方言转换为hiveQL?

问题描述

我正在执行ETL任务,将查询从一种sql语言转换为另一种sql语言。旧数据库使用T-sql,新数据库使用hiveQL。

dateList <-  c("202001","202002")

dateList <- paste0(dateList,"1")

dateList <- as.Date(dateList,format = "%Y%W%u")

错误是:

SELECT CAST(CONCAT(FMH.FLUIDMODELID,'_',RESERVOIR,PRESSUREPSIA) AS NVARCHAR(255)) AS FACT_RRFP_INJ_PRESS_R_PHK,FMH.FluidModelID,FMH.FluidModelName,[AnalysisDate] 

    FROM dbo.LZ_RRFP_FluidModelInj fmi 
    LEFT JOIN DBO.LZ_RRFP_FluidModelHeader fmh ON fmi.FluidModelIDFK = fmh.FluidModelID
    LEFT JOIN LZ_RRFP_FluidModelAss fma on fma.InjectionFluidModelIDFK = fmi.FluidModelIDFK
WHERE FMA.RESERVOIR  IN (SELECT RESERVOIR_CD FROM ATT_RESERVOIR)

如何转换nvarchar?

解决方法

Hive在STRING和VARCHAR中使用UTF-8,可以使用VARCHARSTRING代替NVARCHAR

Hive中的

VARCHAR与STRING +长度验证相同。正如评论中提到的@NickW一样,您完全可以不使用CAST来执行相同的操作,如果将结果插入到带有VARCHAR(255)的表中,则无需CAST也可以使用相同的功能。