BCP Export convierte automáticamente cadenas vacías a NUL

Todo, en esta publicación. Longitud de consulta xp_cmdshell demasiado grande Logré obtener una solución para un problema que tenía con el límite de tamaño de consulta usando xp_cmdshell. La razón por la que estaba escribiendo una consulta tan larga era intentar solucionar otro problema, el hecho de que bcp parece convertir cadenas vacías (de una tabla que contiene campos con cadenas vacías) en algún carácter codificado ('NUL' o 'r', o algo). Esto está afectando para lo que puedo usar mis datos exportados. La consulta de exportación que tengo es

string strBcp = String.Format(
    "declare @sql varchar(8000) " +
    "select @sql = 'bcp \"SELECT * FROM [{0}]..[ivwTmpDrgDataView];\" ' +" +
    "'queryout \"{1}\\DRGData.txt\" -c -t -T -S ' + @@servername " +
    "exec master..xp_cmdshell @sql;",
    strDatabase,
    strDataDir);

Esto funciona bien, pero en la base de datos del archivo exportado, los valores se convierten

NULL -> Empty String (Which is fine!)
Empty String -> Some strange character

Podría leer el archivo .txt con C# y luego recodificar - ¿Cuál es la mejor manera de convertir mi 'carácter extraño' a lo que debería ser, una cadena vacía?

Gracias por su tiempo.

preguntado el 12 de junio de 12 a las 16:06

2 Respuestas

Esto es por diseño, si bcp convirtió las cadenas nulas y vacías en el mismo resultado (digamos una cadena vacía), entonces no habría forma de eliminar la ambigüedad más adelante.

Respondido el 12 de junio de 12 a las 16:06

Entonces, ¿cuál es la mejor manera de convertir mi personaje extraño en una cadena vacía? ¿Eso es hacer que bcp escriba una cadena vacía como una cadena vacía? - Caballero de la Luna

mediante el uso coalesce or IsNull en su consulta de salida? - paul

BCP convierte NULL en una cadena vacía, así que use NULL en lugar de una cadena vacía.

Más descripción

utilidad bcp

Respondido 29 Jul 16, 04:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.