sql >> Base de Datos >  >> RDS >> Sqlserver

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

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 la columna [Descripción corta] no se ve nada demasiado grande, la columna de texto de 255 caracteres será predeterminada.

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

  1. Debe asegurarse de que la columna [ShortDescription] en al menos una de las filas muestreadas contenga un valor de más de 255 caracteres. Una forma de hacerlo es usando la función REPT(), p. =REPT('z', 4000), que creará una cadena 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 la cantidad de filas muestreadas aumentando el valor de TypeGuessRows en HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel (si su sistema es x64, entonces bajo HKEY_LOCAL_MACHINE\SOFTWARE\wow6432node\Microsoft\Jet\4.0\Engines\Excel )clave de registro.

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

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 limitó a 255 caracteres.