2009-06-30 6 views
7

Vorrei inserire il risultato di una semplice query SQL (qualcosa come: select SP_NUMBER from SERVICE_PACK) che eseguo all'interno del mio script ant (utilizzando l'attività sql) in una proprietà ant (ad esempio service.pack.number).Come posso leggere l'output di una query sql in una proprietà ant?

L'attività sql può essere inviata a un file, ma esiste un modo più diretto?

risposta

7

Anche se avrei preferito non creare un file, che alla fine è andato con la seguente soluzione:

Il compito SQL si chiama come segue

<sql ... print="yes" output="temp.properties" 
     expandProperties="true" showheaders="false" showtrailers="false" > 
     <![CDATA[ 
     select 'current.sp.version=' || NAME from SERVICE_PACK; 
     select 'current.major.version=' || NAME from VERSION; 
     ]]> 
</sql> 

Il file properties generato conterrà:

current.sp.version=03 

current.major.version=5 

Poi basta caricare il file delle proprietà ed eliminarlo:

<property file="temp.properties" /> 
<delete file="temp.properties" /> 

<echo message="Current service pack version: ${current.sp.version}" /> 
<echo message="Current major version: ${current.major.version}" /> 

Questo funziona, e tutto è proprio lì nella sceneggiatura della formica (anche se non è la cosa più bella del mondo!).

+0

ciao! 'seleziona 'deployment_instruction =' deployment_instruction da Patch_spd dove nome_patch = '$ {nome_patch}'' sto eseguendo sopra la query ma nel mio file delle proprietà stampa solo pls help me 'deployment_instruction =' nient'altro – picnic4u

+0

Esegui la query direttamente contro il tuo database e verificare che produca il risultato corretto? – zakvdm

2

Forse l'attività Ant exec è più utile qui? È possibile eseguire uno standalone e ottenere il risultato in una proprietà tramite outputproperty. Dovrai eseguire il tuo SQL in modo indipendente, sfortunatamente.

In alternativa vale la pena consultare il codice per l'attività Ant Sql e modificarlo per accettare un outputproperty? Sembra un po 'un dolore, ma penso che potrebbe essere una modifica molto semplice se non riesci a trovare nulla di più diretto.

+0

Grazie per i suggerimenti, Brian. Sono un po 'stanco di fare troppo al di fuori del mio copione ant, quindi vado con l'approccio descritto nella mia risposta. – zakvdm

+0

Thx per il feedback. Sembra la soluzione più pragmatica per le tue esigenze –

0

MySQL Utenti- ho dovuto modificare la query in questo modo:

SELECT CONCAT('mytable.id=', CAST(ID as CHAR)) from mytable 

Senza la funzione CONCAT, ho appena tornato il testo "1" (che rappresenta il mio id) nel file delle proprietà. Inoltre, il CAST è necessario in un sistema MySQL, altrimenti il ​​campo concatenato viene restituito come BLOB.

Problemi correlati