2016-07-28 3 views
0

J'essaie d'extraire des données entières d'une table et le résultat devrait être une chaîne séparée par des virgules. Voici mon code qui fonctionne bien.Meilleure approche pour extraire des données entières de la table Groovy Sql

import groovy.sql.Sql; 
import java.sql.ResultSet; 

def temp=""; 
def temp1=""; 
sql = Sql.newInstance("jdbc:oracle:thin:@localhost:1521:XE","username", "password", "oracle.jdbc.driver.OracleDriver") 
sql.eachRow("select * FROM employee") { 
temp1=it.toRowResult().values().join(", ") 
if(temp=="") 
      { 
      temp=temp1; 
      } 
else 
      { 
      temp=temp+"\n"+temp1 
      } 

} 

Veuillez nous suggérer s'il y a une meilleure approche pour gérer cette exigence dans Groovy.

+0

L'idée est-elle de stocker dans le fichier 'csv'? – Rao

+0

Non pas dans un csv mais quand je fais une opération de sélection j'ai besoin de la récupérer les données de la table sous la forme de valeurs séparées par des virgules. Je veux le stocker dans une chaîne. –

Répondre

0

La garder solution simple est la suivante:

import groovy.sql.Sql; 
import java.sql.ResultSet; 

Sql sql = Sql.newInstance("jdbc:oracle:thin:@localhost:1521:XE","username", "password", "oracle.jdbc.driver.OracleDriver") 

StringBuilder builder = new StringBuilder() 

sql.eachRow("select * FROM employee") { row -> 
    builder.append("${row.employeeId},") // no idea what your column names are 
} 

return builder.toString() // should trim trailing comma but I'll save that for you 

Vous pouvez également être en mesure de le faire avec inject(), mais je n'ai pas essayé sur un jeu de résultats SQL avant.

+0

Je ne veux pas spécifier les noms de colonnes, mais plutôt les données de toutes les colonnes où la virgule doit être le délimiteur pour chaque valeur de colonne. Y a-t-il un moyen d'atteindre ce scénario? –

+0

Si vous ne souhaitez pas utiliser de noms de colonne, vous pouvez utiliser des valeurs entières de position de colonne. Cependant, un "select *" n'est pas très précis sur l'ordre des colonnes retournées. Vous devez ajouter les noms de colonnes à l'instruction select pour garantir l'ordre du résultat et vous y référer par position. –