tables new manager leer exportar error dinamico destination datos create could sql-server-2008 excel ssis codepages import-from-excel

sql-server-2008 - manager - ssis excel destination create new file



El texto se truncó o uno o más caracteres no coinciden en la página de códigos de destino Al importar desde un archivo de Excel (6)

Tengo un archivo Excel con cuatro columnas de texto: una de ellas se llama ShortDescription, que tiene el valor más largo. Creé una tabla en la base de datos de SQL Server 2008, con cuatro columnas y el tipo de columna ShortDescription está establecido en NvarChar (Max).

pero cuando utilizo el diálogo de importación y exportación de SSIS, sigo obteniendo el error mencionado en el título, incluso cuando configuro la opción OnTruncation para Ignorar.

Intenté borrar los datos de la columna, y tuvo éxito (así que me aseguré de que el problema esté en la columna ShortDescription). Traté de copiar toda la información a otro libro de trabajo de Excel, y todavía no tuve suerte.

algunas ideas ???


Hay una ubicación alternativa del componente de registro que debe modificarse para resolver este problema.

Si no puedes encontrarlo en

Inicio-> RUN-> RegEdit-> HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Jet / 4.0 / Engines / Excel

luego mira adentro

Inicio-> RUN-> RegEdit-> HKEY_LOCAL_MACHINE -> SOFTWARE -> Wow6432Node -> Microsoft -> Jet -> 4.0 -> Motores -> Excel


Obtuve este error cuando intentaba importar un archivo grande que tenía algunos caracteres chinos y también algunas cadenas inválidas (grandes).

El archivo de texto se guardó en formato UTF8.

Mi configuración:

En la Opción general (no cambió nada):

- Locale: English (United States) - Unicode: Unchecked - Code Page: 65001 (UTF-8)

Hay una opción avanzada a la izquierda

- DataType (for column): Unicode String [DT_WSTR] (changed) - OutputColumnWidth: 4000 (that''s the maximum) (changed)

En la asignación de tipos de datos de revisión

- On Error: Ignore - On Truncation: Ignore

Mi columna de destino tenía ancho = 50.

No obtuve errores con estas configuraciones.


Para mí, este enlace me ayudó: https://support.microsoft.com/en-us/kb/189897

  1. Copie la fila que tiene un valor de celda> 255 caracteres al comienzo de Excel, haga que esa fila sea la primera fila en Excel
  2. cambie el valor de registro desde el enlace de arriba.

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

Si es así, probablemente el problema sea que SSIS muestrea algunas filas al principio de su hoja de cálculo cuando crea la fuente de Excel. Si en la columna [ShortDescription] no se ve nada demasiado grande, tendrá una columna de texto de 255 caracteres.

Por lo tanto, para importar datos de una columna que contiene filas con grandes cantidades de datos sin truncamiento, existen 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 usar la función REPT (), p. Ej. = 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 de Jet Excel para incluir dicha fila. Puede aumentar el número de filas muestreadas aumentando el valor de TypeGuessRows bajo HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Jet/4.0/Engines/Excel (de si su sistema es x64 y luego bajo HKEY_LOCAL_MACHINE/SOFTWARE/wow6432node/Microsoft/Jet/4.0/Engines/Excel Clave de registro.

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

Para explicarlo mejor, SSIS crea 3 objetos detrás de las escenas del asistente, un objeto fuente 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, el muestreo que describí se hace y se establece el tamaño de la columna fuente. Entonces, cuando el operador de flujo de datos se ejecuta e intenta extraer los datos de Excel para ponerlos en su tabla, ya está viendo 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 ofensiva (del mensaje de error). En el formulario ''Elegir un origen de datos'' en el asistente de importación, mi fuente era el archivo plano. En el panel de la izquierda, elige ''Avanzado''. A continuación, puede establecer las propiedades de columnas individuales. En mi caso, el ''OutputColumnWidth'' para la mayoría de mis columnas fue predeterminado a ''50''. Simplemente lo actualicé a un valor mayor que no truncaría el valor del archivo plano.


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