我正在执行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?
1条答案
按热度按时间idv4meu81#
hive在字符串和varchar中使用utf-8,您可以使用它
VARCHAR
或者STRING
而不是NVARCHAR
.VARCHAR
在配置单元中与字符串+长度验证相同。正如@nickw在评论中提到的那样,您可以在没有CAST
如果将结果插入表中VARCHAR(255)
,无需浇铸,也能正常工作。