2013-09-05 15 views
5

Desidero esportare valori da SQL Server a file txt. So di BCP, lì ho bisogno di dare una query o nome di una tabella per esportare i dati da una tabella. Non voglio esportare i dati ma voglio esportare i valori assegnati alla variabile. Come posso farlo, qualche aiuto?Esportare valori da SQL Server a file txt

+0

Che cosa si intende per 'valore delle esportazioni assegnati a un variable' ..? – user2339071

+0

per esempio: 'declare @var int = 10', voglio 10 essere lì nel file .txt – niren

+0

In Management Studio è possibile impostare l'opzione" Risultati su testo "dalla barra degli strumenti dei comandi (o CTRL + T) e qualsiasi cosa si esegua in query windows, i risultati andranno al file di testo –

risposta

5

Utilizzare una query per raccogliere le variabili che si desidera esportare. Qualcosa del genere:

DECLARE @var1 INTEGER 
DECLARE @var2 INTEGER 

SELECT @var1 = 10 
SELECT @var2 = 22 

SELECT 'variable 1' AS VarName, @var1 AS VarValue 
UNION 
SELECT 'variable 2' AS VarName, @var2 AS VarValue 

Utilizzare questa istruzione di query nel seguente comando. Utilizzare queryout e sostituire [querystatement] con l'istruzione precedente o utilizzare una variabile per la stringa di query.

EXEC master..XP_CMDSHELL 'bcp "[querystatement]" queryout "c:\spt_values.dat"' 

Se la variabile deve essere dichiarato fuori della dichiarazione:

DECLARE @cmd varchar(1000) 
DECLARE @sql varchar(8000) 
DECLARE @var1 int 
SELECT @var1 = 10 
SET @cmd='"select '+CAST(@var1 AS VARCHAR(10))+'"' 
SELECT @sql = 'bcp '[email protected]+' queryout I:\File\mytest.txt -c -t -T -S YAMUNA\SQLEXPRESS'; 
exec xp_cmdshell @sql; 
+0

Non riesco a trovare come posso esportare i valori nel file .txt nella tua risposta, ma ho provato ad eseguire la query che hai dato con l'esportazione di 'BCP' ma non funziona, c'è un altro modo per farlo. – niren

+0

Ho trovato da un'altra parte: EXEC master..XP_CMDSHELL 'bcp "[querystatement]" queryout "c: \ spt_values.dat"' Hai utilizzato l'opzione queryout? – Wietze314

+0

Funziona Se uso in questo modo: declare @cmd varchar (1000) dichiara @sql varchar (8000) set @cmd = '"DECLARE @ var1 int; SELECT @ var1 = 10; seleziona @ var1"' SELECT @sql = 'bcp' + @ cmd + 'queryout I: \ File \ mytest.txt -c -t -T -S YAMUNA \ SQLEXPRESS'; exec xp_cmdshell @sql; Ma voglio dichiarare e assegnare la variabile '@ var1' al di fuori delle virgolette – niren

Problemi correlati