2012-07-18 7 views
7

Qualcuno potrebbe dirmi come leggere il contenuto di un file in una variabile MS SQL utilizzando T-SQL?Come leggere il contenuto di un file in una variabile SQL

+0

spiegare di più su ciò che sei cercando di fare esattamente. Che tipo di contenuto stai cercando di leggere e in che tipo di variabile? Intendi importare il contenuto di un file flat in una tabella usando tsql? – vmvadivel

+0

Voglio leggere un file * .sql ed eseguire lo script usando il comando EXEC. –

+0

Si potrebbe anche voler guardare la modalità 'sqlcmd' e [l'opzione': r'] (http://blogs.msdn.com/b/patrickgallucci/archive/2007/09/03/sqlcmd-and-the- power-of-the-little-r.aspx) in base al motivo per cui è necessario. –

risposta

16
DECLARE @FileContents VARCHAR(MAX) 

SELECT @FileContents=BulkColumn 
FROM OPENROWSET(BULK'PathToYourFile.sql',SINGLE_BLOB) x; 

L'account del servizio SQL Server deve disporre delle autorizzazioni per leggere il file ovviamente.

+0

Ho provato il tuo metodo, funziona sicuramente! Un grande grazie. Tuttavia, non sembra che legga l'intero file. Non è completamente caricato nella variabile o è caricato in un formato binario. Come carico il testo completo in forma ASCII? –

+0

@BabuJames - Mi è venuto in mente che la variabile potrebbe essere "nvarchar", quindi forse provateci. Inoltre, come stai stabilendo che non è completamente caricato? SSMS troncherà l'output di variabili lunghe. Vedi [come ottenere il set completo da SSMS] (http://stackoverflow.com/questions/8930034/how-to-get-the-full-resultset-from-ssms/8930141#8930141) per risolvere il problema. –

+0

Tutto il tuo suggerimento mi ha aiutato a capire di più sul problema, anche se rimane ancora irrisolto. Lo scenario è: ho circa 10 file di backup dello stesso database. Periodicamente ho bisogno di sincronizzarli con le ultime modifiche al modello. Quindi, adesso devo ripristinare ogni file, eseguire lo script e fare il backup. Pertanto, ho pensato ad una sorta di automazione per questo e mi è venuta l'idea di uno script che ripristinasse uno per uno e facesse le operazioni. Tutto il resto va bene, ma l'esecuzione di file .sql salvati localmente su di essi è problematica. –

2

Utilizzare SQLCMD per eseguire .sql (dal prompt dei comandi o all'interno di SSMS). Se si desidera utilizzarlo all'interno SSMS poi la prima attivare la modalità SQLCMD (Query >> Modalità SQLCMD)

Partenza http://msdn.microsoft.com/en-us/library/ms174187.aspx

:r yourFilename 

qualcosa di simile:

:r d:\scripts\sample.sql 
Problemi correlati