2012-07-18 8 views
7

¿Podría alguien decirme cómo leer el contenido de un archivo en una variable MS SQL utilizando T-SQL?Cómo leer el contenido de un archivo en una variable SQL

+0

explicar más de lo que está tratando de hacer exactamente ¿Qué tipo de contenido estás tratando de leer y en qué tipo de variable? ¿Quiere decir importar los contenidos de un archivo plano en una tabla usando tsql? – vmvadivel

+0

Quiero leer un archivo * .sql y ejecutar el script usando el comando EXEC. –

+0

Es posible que también desee ver el modo 'sqlcmd' y [el interruptor': r'] (http://blogs.msdn.com/b/patrickgallucci/archive/2007/09/03/sqlcmd-and-the- power-of-the-little-r.aspx) dependiendo de por qué necesita esto. –

Respuesta

16
DECLARE @FileContents VARCHAR(MAX) 

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

La cuenta de servicio de SQL Server necesita tener permisos para leer el archivo obviamente.

+0

Probé su método, definitivamente funciona! Un gran gracias. Sin embargo, parece que no leo todo el archivo. No está completamente cargado en la variable o está cargado en forma binaria. ¿Cómo cargo el texto completo en formato ASCII? –

+0

@BabuJames - Se me ocurrió que la variable podría necesitar ser 'nvarchar', así que tal vez intente eso. Además, ¿cómo se está estableciendo que no está completamente cargado? SSMS truncará la salida de variables largas. Consulte [cómo obtener el conjunto de resultados completo de SSMS] (http://stackoverflow.com/questions/8930034/how-to-get-the-full-resultset-from-ssms/8930141#8930141) para obtener una solución. –

+0

Toda su sugerencia me ayudó a averiguar más sobre el problema, aunque todavía no se ha resuelto. El escenario es: Tengo aproximadamente 10 archivos de respaldo de la misma base de datos. Periódicamente necesito sincronizarlos con los últimos cambios de modelo. Entonces, ahora tengo que restaurar cada archivo, ejecutar el script y hacer una copia de seguridad. Por lo tanto, pensé en algún tipo de automatización para esto y se me ocurrió la idea de una secuencia de comandos que restaurará cada una por una y hará las operaciones. Todo lo demás está bien, pero la ejecución del archivo .sql guardado localmente en ellos es problemático. –

2

Utilice SQLCMD para ejecutar el archivo .sql (desde el símbolo del sistema o dentro de SSMS). Si desea utilizarlo dentro de SSMS entonces primero activar el modo SQLCMD (Consulta >> Modo SQLCMD)

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

:r yourFilename 

algo como:

:r d:\scripts\sample.sql 
Cuestiones relacionadas