简体   繁体   English

ORA-00903: 使用三引号的多行 spark sql 字符串的无效表名错误

[英]ORA-00903: invalid table name error of multiple line spark sql string using triple-quotes

I have a spark SQL string like this:我有一个像这样的火花 SQL 字符串:

val sql_1= """SELECT TG.TG_ID,
                      |       TG.ORG_NO,
                      |       TO_CHAR(VC.DATA_DATE, 'yyyymmdd') AS DATA_DATE,
                      |       EDP.METER_ID,
                      |       EDP.CONS_SORT,
                      |       EDP.WIRING_MODE,
                      |       VC.PHASE_FLAG,
                      |       VC.U1,
                      |       VC.U2,
                      |       VC.U3,
                      |       VC.U4,
                      |       VC.U5,
                      |       VC.U6,
                      |       VC.U7,
                      |       VC.U8,
                      |       VC.U9,
                      |       VC.U10,
                      |       VC.U11,
                      |       VC.U12,
                      |       VC.U13,
                      |       VC.U14,
                      |       VC.U15,
                      |       VC.U16,
                      |       VC.U17,
                      |       VC.U18,
                      |       VC.U19,
                      |       VC.U20,
                      |       VC.U21,
                      |       VC.U22,
                      |       VC.U23,
                      |       VC.U24,
                      |       VC.U25,
                      |       VC.U26,
                      |       VC.U27,
                      |       VC.U28,
                      |       VC.U29,
                      |       VC.U30,
                      |       VC.U31,
                      |       VC.U32,
                      |       VC.U33,
                      |       VC.U34,
                      |       VC.U35,
                      |       VC.U36,
                      |       VC.U37,
                      |       VC.U38,
                      |       VC.U39,
                      |       VC.U40,
                      |       VC.U41,
                      |       VC.U42,
                      |       VC.U43,
                      |       VC.U44,
                      |       VC.U45,
                      |       VC.U46,
                      |       VC.U47,
                      |       VC.U48,
                      |       VC.U49,
                      |       VC.U50,
                      |       VC.U51,
                      |       VC.U52,
                      |       VC.U53,
                      |       VC.U54,
                      |       VC.U55,
                      |       VC.U56,
                      |       VC.U57,
                      |       VC.U58,
                      |       VC.U59,
                      |       VC.U60,
                      |       VC.U61,
                      |       VC.U62,
                      |       VC.U63,
                      |       VC.U64,
                      |       VC.U65,
                      |       VC.U66,
                      |       VC.U67,
                      |       VC.U68,
                      |       VC.U69,
                      |       VC.U70,
                      |       VC.U71,
                      |       VC.U72,
                      |       VC.U73,
                      |       VC.U74,
                      |       VC.U75,
                      |       VC.U76,
                      |       VC.U77,
                      |       VC.U78,
                      |       VC.U79,
                      |       VC.U80,
                      |       VC.U81,
                      |       VC.U82,
                      |       VC.U83,
                      |       VC.U84,
                      |       VC.U85,
                      |       VC.U86,
                      |       VC.U87,
                      |       VC.U88,
                      |       VC.U89,
                      |       VC.U90,
                      |       VC.U91,
                      |       VC.U92,
                      |       VC.U93,
                      |       VC.U94,
                      |       VC.U95,
                      |       VC.U96
                      |  FROM E_MP_VOL_CURVE VC
                      | INNER JOIN E_DATA_MP EDP
                      |    ON VC.ID = EDP.ID
                      | INNER JOIN G_TG TG
                      |    ON EDP.TG_ID = TG.TG_ID
                      | WHERE TG.PUB_PRIV_FLAG = '01'
                      |   AND VC.DATA_DATE >= TO_DATE('20200801', 'yyyymmdd')
                      |   AND VC.DATA_DATE <= TO_DATE('20200831', 'yyyymmdd')
                      |   AND EDP.CONS_SORT NOT LIKE '06'
                      |   AND VC.PHASE_FLAG IN (1, 2, 3)
                      |   AND TG.ORG_NO LIKE '134010902'
                      |   --AND TG.TG_ID IN (1646178, 1646179)
                      | ORDER BY TG.ORG_NO, TG.TG_ID, EDP.CONS_SORT, VC.DATA_DATE, VC.PHASE_FLAG""".stripMargin

, which will give me the "ORA-00903: invalid table name" error. ,这会给我“ORA-00903:无效的表名”错误。 However, the original SQL string, namely the following:但是,原来的 SQL 字符串,即如下:

SELECT TG.TG_ID,
       TG.ORG_NO,
       TO_CHAR(VC.DATA_DATE, 'yyyymmdd') AS DATA_DATE,
       EDP.METER_ID,
       EDP.CONS_SORT,
       EDP.WIRING_MODE,
       VC.PHASE_FLAG,
       VC.U1,
       VC.U2,
       VC.U3,
       VC.U4,
       VC.U5,
       VC.U6,
       VC.U7,
       VC.U8,
       VC.U9,
       VC.U10,
       VC.U11,
       VC.U12,
       VC.U13,
       VC.U14,
       VC.U15,
       VC.U16,
       VC.U17,
       VC.U18,
       VC.U19,
       VC.U20,
       VC.U21,
       VC.U22,
       VC.U23,
       VC.U24,
       VC.U25,
       VC.U26,
       VC.U27,
       VC.U28,
       VC.U29,
       VC.U30,
       VC.U31,
       VC.U32,
       VC.U33,
       VC.U34,
       VC.U35,
       VC.U36,
       VC.U37,
       VC.U38,
       VC.U39,
       VC.U40,
       VC.U41,
       VC.U42,
       VC.U43,
       VC.U44,
       VC.U45,
       VC.U46,
       VC.U47,
       VC.U48,
       VC.U49,
       VC.U50,
       VC.U51,
       VC.U52,
       VC.U53,
       VC.U54,
       VC.U55,
       VC.U56,
       VC.U57,
       VC.U58,
       VC.U59,
       VC.U60,
       VC.U61,
       VC.U62,
       VC.U63,
       VC.U64,
       VC.U65,
       VC.U66,
       VC.U67,
       VC.U68,
       VC.U69,
       VC.U70,
       VC.U71,
       VC.U72,
       VC.U73,
       VC.U74,
       VC.U75,
       VC.U76,
       VC.U77,
       VC.U78,
       VC.U79,
       VC.U80,
       VC.U81,
       VC.U82,
       VC.U83,
       VC.U84,
       VC.U85,
       VC.U86,
       VC.U87,
       VC.U88,
       VC.U89,
       VC.U90,
       VC.U91,
       VC.U92,
       VC.U93,
       VC.U94,
       VC.U95,
       VC.U96
  FROM E_MP_VOL_CURVE VC
 INNER JOIN E_DATA_MP EDP
    ON VC.ID = EDP.ID
 INNER JOIN G_TG TG
    ON EDP.TG_ID = TG.TG_ID
 WHERE TG.PUB_PRIV_FLAG = '01'
   AND VC.DATA_DATE >= TO_DATE('20200801', 'yyyymmdd')
   AND VC.DATA_DATE <= TO_DATE('20200831', 'yyyymmdd')
   AND EDP.CONS_SORT NOT LIKE '06'
   AND VC.PHASE_FLAG IN (1, 2, 3)
   AND TG.ORG_NO LIKE '134010902'
   --AND TG.TG_ID IN (1646178, 1646179)
 ORDER BY TG.ORG_NO, TG.TG_ID, EDP.CONS_SORT, VC.DATA_DATE, VC.PHASE_FLAG

works fine in Navicat.在 Navicat 中运行良好。 The triple-quotes syntax comes from this question( How to execute multi line sql in spark sql ).三引号语法来自这个问题( How to execute multi line sql in spark sql )。 Any suggestion is appreciated!任何建议表示赞赏!

Now use the following syntax and it works:现在使用以下语法,它可以工作:

val sql_user= s"(SELECT TG.TG_ID, TG.ORG_NO, TO_CHAR(VC.DATA_DATE, 'yyyymmdd') AS DATA_DATE, EDP.METER_ID, EDP.CONS_SORT, EDP.WIRING_MODE," +
      s"VC.PHASE_FLAG,VC.U1, VC.U2, VC.U3, VC.U4, VC.U5, VC.U6, VC.U7, VC.U8, VC.U9, VC.U10, VC.U11, VC.U12,VC.U13, VC.U14, VC.U15, VC.U16, VC.U17," +
      s"VC.U18, VC.U19, VC.U20, VC.U21, VC.U22, VC.U23, VC.U24, VC.U25, VC.U26, VC.U27, VC.U28, VC.U29, VC.U30, VC.U31, VC.U32, VC.U33,VC.U34, VC.U35, " +
      s"VC.U36, VC.U37, VC.U38, VC.U39, VC.U40, VC.U41, VC.U42, VC.U43, VC.U44, VC.U45, VC.U46, VC.U47, VC.U48, VC.U49, VC.U50, VC.U51, VC.U52, VC.U53, " +
      s"VC.U54,VC.U55, VC.U56, VC.U57, VC.U58, VC.U59, VC.U60, VC.U61, VC.U62, VC.U63, VC.U64, VC.U65, VC.U66, VC.U67, VC.U68, VC.U69, VC.U70, VC.U71, " +
      s"VC.U72, VC.U73, VC.U74, VC.U75,VC.U76, VC.U77, VC.U78, VC.U79, VC.U80, VC.U81, VC.U82, VC.U83, VC.U84, VC.U85, VC.U86, VC.U87, VC.U88, VC.U89, " +
      s"VC.U90, VC.U91, VC.U92, VC.U93, VC.U94, VC.U95, VC.U96 FROM E_MP_VOL_CURVE VC INNER JOIN E_DATA_MP EDP ON VC.ID = EDP.ID INNER JOIN G_TG TG " +
      s"ON EDP.TG_ID = TG.TG_ID WHERE TG.PUB_PRIV_FLAG = '01'AND VC.DATA_DATE >= TO_DATE('20200801', 'yyyymmdd') AND VC.DATA_DATE <= TO_DATE('20200831', 'yyyymmdd')" +
      s"AND EDP.CONS_SORT NOT LIKE '06' AND VC.PHASE_FLAG IN (1, 2, 3) AND TG.ORG_NO LIKE '134010902' ORDER BY TG.ORG_NO, TG.TG_ID, EDP.CONS_SORT, VC.DATA_DATE, VC.PHASE_FLAG)"

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM