sql-server sql-server-2005 character-encoding ssms rpt

sql server - Convierte el archivo de salida.rpt de SSMS a.txt/.csv



sql-server sql-server-2005 (6)

Quiero exportar mi gran resultado de consulta de SSMS (SQL Server Management Studio) (2.5m líneas, 9 campos) como .csv o comma-delimited .txt (con encabezados). (MS SQL Server 2005 Management Studio).

Para que pueda leerlo línea por línea en el programa VBA (para hacer ciertos cálculos en los datos) o hacer consultas en Excel (por ejemplo, con Microsoft Query). Los cálculos son complicados y prefiero hacerlo en otro lugar que no sea SSMS.

Si elijo ''query result to text'' en SSMS y una pequeña respuesta (algunas líneas, por ejemplo, hasta 200k), podría simplemente copiar y pegar en un editor de texto. Para mi gran respuesta aquí, podría copiar y pegar 200 o más líneas a la vez, 10 veces, en un editor de texto como Ultra-Edit. (Cuando pruebo todos los 2.5m a la vez, recibo una advertencia de memoria dentro de SSMS). Pero para el futuro me gustaría una solución más elegante.

Para ''resultado de consulta a archivo'', SSMS escribe siempre en un archivo .rpt. (Cuando haces clic con el botón derecho en la ventana de resultados y eliges "guardar como", se produce un error de memoria como el anterior).

-> Así que parece que mi única opción es hacer que la salida de SSMS sea el resultado de un archivo, es decir, .rpt y luego, convertir .rpt a .txt.

¿Asumo que este .rpt es un archivo de Crystal Reports? O no es así. No tengo Crystal Reports en mi PC, así que no puedo usar eso para convertir el archivo.

Al abrir .rpt en Ultra-Edit se ve bien. Sin embargo, en Microsoft Query en Excel, los títulos no quieren mostrarse.

Cuando simplemente leo y escribo el archivo .rpt usando VBA, el archivo se reduce a la mitad en tamaño. (330meg a 180meg). En Microsoft Query, los títulos se muestran ahora (aunque el primer nombre de campo tiene un personaje principal divertido, que me ha sucedido anteriormente en otras situaciones totalmente diferentes). Parece ser capaz de hacer tablas dinámicas significativas en Excel.

Sin embargo, cuando abro este nuevo archivo en Ultra-Edit, ¡muestra caracteres chinos! ¿Podría haber todavía algunos personajes divertidos en algún lado?

-> ¿Existe tal vez una aplicación de conversión gratuita (y simple / segura) disponible en alguna parte? O debería simplemente confiar en que este .txt está bien para leer en mi programa VBA.

Gracias


Aquí está mi solución.

  • Utilice Microsoft SQL Server Management Studio
  • Configúrelo para guardar los archivos .rpt delimitados por tabuladores: vaya a '' Consultar ''> '' Opciones de consulta ''> '' Resultados ''> '' Texto ''> '' Formato de salida '' y elija '' Tab delimitado '' (presione Aceptar)

  • Ahora, cuando crea un informe, use el menú '' Guardar con codificación ... '' y seleccione '' Unicode '' (de manera predeterminada, es ''UTF8'')

  • Ahora puede abrir el archivo con Excel, y todo estará en columnas, sin problemas de escape ni caracteres extraños (tenga en cuenta que el archivo puede ser más grande debido a la codificación Unicode).

Bueno, con la ayuda de un amigo encontré mi solución: los archivos RPT son archivos de texto plano generados en MS SQL Server Management Studio, pero con codificación UCS-2 Little Endian en lugar de ANSI.

-> En Ultra-Edit, la opción ''archivo, opciones de conversión, unicode a ASCII '' funcionó. El archivo de texto se reduce de 330 meg a 180 meg, Microsoft Query en Excel ahora puede ver las columnas y VBA puede leer las líneas de archivo y proceso *.

Ps Otra alternativa hubiera sido usar MS Access (que puede manejar grandes resultados) y conectarse con ODBC a la base de datos. Sin embargo, entonces tendría que usar Jet-SQL, que tiene menos comandos que el T-SQL de MS SQL Server Management Studio. Aparentemente, uno puede crear un archivo nuevo como .adp en MS Access 2007 y luego usar T-SQL en un servidor SQL Server. Pero en MS Access 2010 (en mi PC) esta opción parece no existir más.


En mi caso, ejecuto una consulta en SSMS (antes de eso presiono CTRL + MAYÚS + F) el resultado abre una ventana para guardarlo como un archivo rpt, no pude leerlo (no hay instalación de Crystal Report en mi computadora). ..el momento en que ejecuté la consulta, la guardé como (todos los archivos) configurada con la extensión * .txt, y eso fue todo lo que pude leer como archivo de texto.


Esta es la manera recomendada en que veo que puedes hacerlo.

Mi fuente (Respuesta de DavidAir)

Seleccione "resultados en la cuadrícula", luego haga clic con el botón derecho en la cuadrícula y seleccione "Guardar resultados como ..." Esto guardará un archivo CSV.

En realidad, hay un problema con eso si algunos valores contienen comas: el archivo CSV resultante no se ha escapado correctamente. El archivo RPT es bastante bueno ya que contiene columnas de ancho fijo. Si tiene Excel, una forma relativamente fácil de convertir el resultado a CSV es abrir el archivo RPT en Excel. Esto mostrará el asistente de importación de texto y Excel haría un buen trabajo adivinando las columnas. Vaya a través del asistente y luego guarde los resultados como CSV.


Manera simple: en SQL Server Management Studio Vaya al menú Consulta> Opciones de consulta> Resultados> Texto> Cambiar "Formato de salida" a "Coma delimitado". Ahora ejecute su consulta para exportar a un archivo, y una vez hecho esto cambie el nombre del archivo de .rpt a .csv y se abrirá en excel :).


Puede usar BCP ( http://msdn.microsoft.com/en-us/library/ms162802.aspx )

Abra un símbolo del sistema y luego escriba esto:

SET Q="select * from user1.dbo.table1" BCP.EXE %Q% queryout query.out -S ServerName -T -c -t

  • Puede usar -U -P (en lugar de -T) para Autenticación de SQL.
  • Tu aplicación tiene un problema con UNICODE. Puede forzar una página de códigos usando -C {página de códigos} si tiene dudas, pruebe 850.

  • -t forzará la pestaña como delimitador de campo, puede cambiarla por coma -t,

Lo bueno es que puede llamar esto directamente desde su VBA ejecutando el comando de Shell.