22 messaggi dal 07 aprile 2011
Ciao a tutti,
avrei l'esigenza di convertire una query di sql server in csv. Dato che sono alle prime armi non ho proprio idea di come muovermi. Esiste un istruzione sql per la conversione o si deve fare uno script ?
Altra domanda : linq può fare una cosa del genere ?
Grazie anticipatamente per la disponibilità.
Ciao
1.976 messaggi dal 27 luglio 2005
Contributi
salve,
eldest139 wrote:
Ciao a tutti,
avrei l'esigenza di convertire una query di sql server in csv. Dato che sono alle prime armi non ho proprio idea di come muovermi. Esiste un istruzione sql per la conversione o si deve fare uno script ? Altra domanda : linq può fare una cosa del genere ?
Grazie anticipatamente per la disponibilità.
Ciao

una query non e' convertibile in csv, a meno che tu non intenda "la proiezione derivante da una query"...
in questo caso, la cosa non e' direttamente fattibile ma si puo' ottenere un aggiramente della limitazione chiamando tramite xp_cmdshell l'utility  ulk) C(opy) P(rogram), per l'appunto bcp.exe... vedi per un esempio http://www.simple-talk.com/sql/database-administration/creating-csv-files-using-bcp-and-stored-procedures/ uno dei limiti della soluzione e' che richiede l'abilitazione explicita (da eseguirsi appositamente, una tantum se l'operazione e' spot con poi necessita' di disabilitazione, oppure singolarmente una volta solamente se l'attivita' sara' ripetuta e di normale attuazione) dell'utilizzo di xp_cmdshell... questa procedura estesa viene ora infatti di fatto disabilitata di default in quanto potenzialmente "pericosola".. consente di effettuare tramite SQL Server chiamate dirette al sistema operativo (considera ad esempio EXEC xp_cmdshell 'DEL .')..
saluti

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php
22 messaggi dal 07 aprile 2011
Grazie mille Andrea,
io dovrei eseguire questa operazione almeno una volta al giorno con una console application, quindi mi sa la tua soluzione non è fattibile. Puoi gentilmente spiegarmi se è una cosa fattibile da c# tramite Linq o OleBbConnection, oppure con una stored procedure? Perché ho provato a cercare un po in giro e la maggior parte delle guide spiega come importare un csv su sql , quindi mi sembra strano non poter fare la cosa inversa da codice.
Grazie mille di nuovo per la disponibilità
Ciao
1.976 messaggi dal 27 luglio 2005
Contributi
salve,
eldest139 wrote:
Grazie mille Andrea,
io dovrei eseguire questa operazione almeno una volta al giorno con una console application, quindi mi sa la tua soluzione non è fattibile. Puoi gentilmente spiegarmi se è una cosa fattibile da c# tramite Linq o OleBbConnection, oppure con una stored procedure? Perché ho provato a cercare un po in giro e la maggior parte delle guide spiega come importare un csv su sql , quindi mi sembra strano non poter fare la cosa inversa da codice.
Grazie mille di nuovo per la disponibilità
Ciao
personalmente io schedulerei un file bat (cmd o powershell) con direttamente la chiamata a BCP.exe con la query a te interessante...
LINQ di suo non fa niente se non fare un'estrazione di dati, poi tocca a te scrivere il codice client per eseguire l'output su file.. OleDbConnection invece e' un "driver" di connessione, e nel caso rappresenta appunto solo una connessione ad un database.. diversamente ancora invece, una stored procedure e' un comando registrato su SQL Server, ed in questo caso invece puoi fare quanto indicato nella prima risposta, con i medesimi caveat... anche questa puo' essere schedulata sull'Agente SQL Server, mentre nel caso di SQL Express eventualmente puoi usare il Service Broker.. Roger Wolter, pm di SQLExpress scrisse ai tempi un bellissimo articolo in tal senso per funzionalita' di backup, ma il ragionamento non cambia.. vedi http://blogs.msdn.com/b/rogerwolterblog/archive/2006/04/13/575974.aspx saluti

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php
22 messaggi dal 07 aprile 2011
Grazie,
sei stato davvero gentilissimo,
inizio subito a documentarmi.
Ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.