Saltar al contenido

El texto estaba truncado o uno o más caracteres no coincidían con la página de códigos de destino Al importar desde un archivo de Excel

Por fin después de mucho batallar ya dimos con la respuesta de este dilema que muchos lectores de nuestro espacio presentan. Si deseas aportar algún detalle no dejes de aportar tu conocimiento.

Solución:

Supongo que está tratando de importar esto usando una fuente de Excel en el cuadro de diálogo SSIS.

Si es así, el problema es probablemente que SSIS muestrea una cierta cantidad de filas al comienzo de su hoja de cálculo cuando crea la fuente de Excel. si en el [ShortDescription] columna no nota nada demasiado grande, por defecto será una columna de texto de 255 caracteres.

Entonces, para importar datos de una columna que contiene filas con grandes cantidades de datos sin truncamiento, hay dos opciones:

  1. Debes asegurarte de que el [ShortDescription] columna en al menos una de las filas muestreadas contiene un valor de más de 255 caracteres. Una forma de hacerlo es usando la función REPT(), por ejemplo, =REPT(‘z’, 4000), que creará un string de 4000 de la letra ‘z’.
  2. Debe aumentar el número de filas muestreadas por el controlador Jet Excel para incluir dicha fila. Puede aumentar el número de filas muestreadas aumentando el valor de TypeGuessRows en el HKEY_LOCAL_MACHINESOFTWAREMicrosoftJet4.0EnginesExcel (o si su sistema es x64 entonces bajo el HKEY_LOCAL_MACHINESOFTWAREwow6432nodeMicrosoftJet4.0EnginesExcel) registro key.

Puedes ver más información en estos dos enlaces:

  • http://waxtadpole.wordpress.com/2008/04/28/hola-mundo/
  • http://technet.microsoft.com/en-us/library/ms141683.aspx

Para explicarlo mejor, SSIS crea 3 objetos detrás de escena del asistente, un objeto de origen de datos de Excel, un objeto de destino de tabla SQL y un operador de flujo de datos entre ellos. El objeto de origen de Excel define los datos de origen y existe independientemente de los otros dos objetos. Entonces, cuando se crea, se realiza el muestreo que describí y se establece el tamaño de la columna de origen. Entonces, cuando el operador de flujo de datos se ejecuta e intenta extraer los datos de Excel para colocarlos en su tabla, ya está buscando una fuente de datos que se ha limitado a 255 caracteres.

Tuve este problema al importar desde un archivo plano y delimitado a SQL Server. La solución fue actualizar el valor ‘OutputColumnWidth’ para la columna infractora (del mensaje de error). En el formulario ‘Elegir una fuente de datos’ en el asistente de importación, mi fuente era el archivo plano. En el panel más a la izquierda, elija ‘Avanzado’. A continuación, puede establecer las propiedades de las columnas individuales. En mi caso, el ‘Ancho de columna de salida’ para la mayoría de mis columnas estaba predeterminado en ’50’. Simplemente lo actualicé a un valor mayor que no truncaría el valor del archivo plano.

ingrese la descripción de la imagen aquí

Una forma sencilla de hacerlo funcionar es editar el archivo que desea importar y crear una nueva fila en el primer lugar. De esa manera siempre será muestreado. Luego, para cualquier columna que pueda tener> 255 caracteres, simplemente agregue 255 caracteres a la celda y funcionará. Después de importar, simplemente elimine la fila de basura que agregó.

Si crees que te ha resultado de provecho este post, sería de mucha ayuda si lo compartieras con otros programadores así contrubuyes a dar difusión a este contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *