2017-10-06 1 views
0

Je suis nouveau sur teradata et aussi sur scala. J'exécute une requête dans Scala qui lance SQL Exception mais la même requête fonctionne correctement dans le studio Teradata.SCALA TERADATA SQL Exception

Ci-dessous la requête:

SELECT COUNT(loan_no) 
    ,field1 
    ,field2 
    ,field3 
FROM testdb.loan 
WHERE field1 < DATE '2017-09-30' 
GROUP BY field1 
    ,field2 
    ,field3 
ORDER BY field1 

erreur est reçu:

java.sql.SQLException: [Base de données Teradata] [TeraJDBC 15.00.00.20] [Erreur 3707] [SQLState 42000 ] Erreur de syntaxe, quelque chose comme un nom ou un identifiant délimité par Unicode ou un mot-clé 'UDFCALLNAME' ou '(' entre le mot-clé 'FROM' et le mot-clé 'Select')

Code Scala

val queryString = "SELECT COUNT(loan_no),field1,field2,field3 FROM testdb.loan WHERE field1 < DATE '2017-09-30' GROUP BY field1,field2,field3 ORDER BY field1" 

val connString = 
"jdbc:teradata://test.udaystd.com/,TMODE=TERA,charset=UTF8, 
user="+userid+", password="+passwd+", ,charset=UTF8" 

val dbdriver = "com.teradata.jdbc.TeraDriver" 

val jddf = sqlContext.load("jdbc", 
    Map("url" -> connString, 
    "dbtable" -> queryString, 
    "driver" -> dbdriver)) 

S'il vous plaît aider.

+0

Pouvez-vous afficher le code Scala qui inclut cette requête? Cela peut être un problème avec la façon dont vous créez le littéral de chaîne. –

+0

pouvez-vous essayer de l'exécuter sans la clause where? –

+0

j'ai essayé cela aussi et le résultat est la même erreur. La seule façon dont cela fonctionne est quand je l'ai comme ((* select from testdb.loan) comme loandata) –

Répondre

0

j'ai pu corriger en utilisant le code ci-dessous

val queryString = " (SELECT COUNT(loan_no) as loancnt 
,field1,field2,field3 FROM testdb.loan WHERE field1 < DATE '2017-09-30' 
GROUP BY field1,field2,field3) as LOANDATA" 

Aussi, je ne pouvais pas utiliser pour par. Donc je l'ai commandé après l'avoir dans les données.

val orderedDF = df.orderBy($"field1".desc) 
+0

On dirait que les préfixes scala 'SELECT * FROM', ce qui explique aussi l'impossibilité d'ajouter 'ORDER BY' (ce n'est pas autorisé dans Tableau dérivé). Je n'ai jamais travaillé avec Scala, mais il devrait y avoir un réglage pour changer cela. – dnoeth

+0

vous avez raison sur select * de recevoir le préfixe. Si j'en ai besoin autrement, je dois utiliser le jeu de résultats et le convertir en df –