如何将nvarchar从t-sql方言转换为hiveql?

omvjsjqw  于 2021-05-24  发布在  Spark
关注(0)|答案(1)|浏览(495)

我正在执行etl任务,将查询从一种sql方言转换为另一种sql方言。旧数据库使用t-sql,新数据库使用hiveql。

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)

错误是:

org.apache.spark.sql.catalyst.parser.ParseException: 
DataType nvarchar(255) is not supported.

如何转换nvarchar?

idv4meu8

idv4meu81#

hive在字符串和varchar中使用utf-8,您可以使用它 VARCHAR 或者 STRING 而不是 NVARCHAR . VARCHAR 在配置单元中与字符串+长度验证相同。正如@nickw在评论中提到的那样,您可以在没有 CAST 如果将结果插入表中 VARCHAR(255) ,无需浇铸,也能正常工作。

相关问题