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

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

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

  1. SELECT CAST(CONCAT(FMH.FLUIDMODELID,'_',RESERVOIR,'_',PRESSUREPSIA) AS NVARCHAR(255)) AS FACT_RRFP_INJ_PRESS_R_PHK
  2. , FMH.FluidModelID ,FMH.FluidModelName ,[AnalysisDate]
  3. FROM dbo.LZ_RRFP_FluidModelInj fmi
  4. LEFT JOIN DBO.LZ_RRFP_FluidModelHeader fmh ON fmi.FluidModelIDFK = fmh.FluidModelID
  5. LEFT JOIN LZ_RRFP_FluidModelAss fma on fma.InjectionFluidModelIDFK = fmi.FluidModelIDFK
  6. WHERE FMA.RESERVOIR IN (SELECT RESERVOIR_CD FROM ATT_RESERVOIR)

错误是:

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

如何转换nvarchar?

idv4meu8

idv4meu81#

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

相关问题