que he intentado en numerosas ocasiones para pasar el carácter real TAB para SQLCMD, y simplemente no puede hacer que lo tome. Mi fecha de trabajo favorita hasta la fecha es pasar SQLCMD el "Separador de unidades" ASCII, que es hexadecimal 0x1F, y puede ingresarse en la línea de comando al presionar Ctrl-_ (subrayado de control, que en un teclado de EE. UU. Se convierte en Ctrl-shift -'- '(el' - 'al lado del' 0 'en la fila superior del teclado).
La ventaja de utilizar el' Separador de unidades 'es que es MUY improbable que esté presente en el texto de cualquier descripción, y fue diseñado específicamente para este propósito (ver https://en.wikipedia.org/wiki/Delimiter)
después de haber conseguido SQLCMD a hacer eso por mí, a continuación, canalizar su salida a través de un estilo Unix traducir comandos como:
tr '\037' '\t'
El \ 037 es octal para el 'Separador de unidades', y \ t representa el carácter de tabulación, 'tr' traducirá AMBOS de estos para nosotros, no necesitamos confiar en ningún truco de cotización en nuestros scripts o shells.
Para obtener 'tr' en Windows, puede instalar el paquete CoreUtils desde GnuWin32 (consulte http://gnuwin32.sourceforge.net/packages/coreutils.htm) o subir de peso e instalar un entorno Unix completo como Cygwin (http://cygwin.com/).
Poniendo los dos juntos obtenemos:
sqlcmd ... -h-1 -W -k -r1 -s^_ ... | tr '\037' '\t'
y esto le dará a su salida con pestañas.
Busque las otras opciones que he utilizado anteriormente, son esenciales para tratar de obtener una salida limpia de SQLCMD (en orden, sin encabezados, recorte de espacio en blanco, CRLF en espacios, errores en STDERR (no en su salida) archivo!) y '^ _' es como aparecerá el Separador de unidades en la línea de comando). También necesitarás agregar "SET NOCOUNT ON"; a su consulta o secuencia de comandos sql, de lo contrario obtendrá el recuento de filas como un mensaje de prueba que aparece en su salida.
Gran ¡¡¡¡responder!!!! Para otros que buscan hacer esto en PowerShell, tenga en cuenta que el espacio después de '-s' es importante. :) –