2010-08-27 63 views
10

Estoy desarrollando un paquete SSIS, tratando de actualizar una tabla SQL existente desde un archivo plano CSV. Todas las columnas se actualizan correctamente, excepto una columna. Si ignoro esta columna en truncado, mi paquete se completa con éxito. Entonces sé que esto es un problema truncado y no un error.SSIS El texto se truncó con el valor de estado 4

Esta columna está vacía para casi cada fila. Sin embargo, hay algunas filas donde este campo tiene 200-300 caracteres. Mi tarea de conversión de datos identificó este campo como DT_WSTR, pero por lo que he leído en otra parte, quizás esto debería ser DT_NTEXT. He intentado ambos e incluso configuré el DT_WSTR en 500. Pero nada de esto solucionó mi problema. ¿Cómo puedo arreglarlo? ¿Qué tipo de datos debe ser esta columna en mi tabla SQL?

Error: 0xC02020A1 at Data Flow Task 1, Source - Berkeley812_csv [1]: Data conversion failed. The data conversion for column "Reason for Delay in Transition" returned status value 4 and status text "Text was truncated or one or more characters had no match in the target code page.". 
Error: 0xC020902A at Data Flow Task 1, Source - Berkeley812_csv [1]: The "output column "Reason for Delay in Transition" (110)" failed because truncation occurred, and the truncation row disposition on "output column "Reason for Delay in Transition" (110)" specifies failure on truncation. A truncation error occurred on the specified object of the specified component. 
Error: 0xC0202092 at Data Flow Task 1, Source - Berkeley812_csv [1]: An error occurred while processing file "D:\ftproot\LocalUser\RyanDaulton\Documents\Berkeley Demographics\Berkeley812.csv" on data row 758. 

Respuesta

10

sospecho que los o uno o más personajes tenían ninguna coincidencia en la página de códigos de destino parte del error.

Si elimina las filas con valores en esa columna, ¿se carga? ¿Puedes identificar, en otras palabras, las filas que hacen que el paquete falle? Podría ser que los datos sean demasiado largos, o podría ser que hay algún carácter funky que a SQL Server no le gusta.

+1

Beth, como dije anteriormente cuando ignoré los truncados para esta columna, se actualizaron todos estos registros. – salvationishere

+0

OK, entonces has mirado las filas y no ves nada inusual en ellas. Podría ser la longitud en su lugar. ¿Puedes copiar manualmente los datos de una de las filas anómalas en la tabla? Podría darle un mensaje de error más significativo. – Beth

+0

¿Cómo copiaría los datos de Excel a SQL para estas filas anómalas? – salvationishere

20

Una posible razón para este error es que su carácter delimitador (coma, punto y coma, tubería, lo que sea) aparece realmente en los datos en una columna. Esto puede dar mensajes de error muy engañosos, a menudo con el nombre de una columna totalmente diferente.

Una forma de comprobar esto es redirigir las filas 'incorrectas' a un archivo separado y luego inspeccionarlas manualmente. He aquí una breve explicación de cómo hacerlo:

http://redmondmag.com/articles/2010/04/12/log-error-rows-ssis.aspx

Si ése es de hecho el problema, entonces la mejor solución es fijar los archivos en la fuente para citar a los valores de los datos y/o utilizar un delimitador diferente eso no está en los datos.

+0

¡Gracias, pero mi gerente me acaba de informar que ya no necesitamos esta tabla/archivo! – salvationishere

+0

Si usa SSMS para exportar y luego importar los datos, asegúrese de [indicarle que use los identificadores entrecomillados para hacer que desaparezca este error] (http://stackoverflow.com/a/10677148/175679). – SliverNinja

1

En mi caso, algunas de mis filas no tenían el mismo número de columnas que el encabezado. Ejemplo, el encabezado tiene 10 columnas y una de tus filas tiene 8 o 9 columnas. (Columnas = Contar el número de delimitadores caracteres en cada línea)

13

He tenido este problema antes, es probable que el tamaño de columna predeterminado para el archivo sea incorrecto. Pondrá un tamaño predeterminado de 50 caracteres, pero los datos con los que está trabajando son más grandes. En la configuración avanzada para su archivo de datos, ajuste el tamaño de columna de 50 al tamaño de la columna de la tabla.

3

Si esto proviene del Asistente de importación de SQL Server, intente editar la definición de la columna en el origen de datos, tiene 50 caracteres de forma predeterminada, pero puede ser más larga.

Data Soruce -> Advanced -> Look at the column that goes in error -> change OutputColumnWidth to 200 and try again.

0

Si todas las demás opciones han fallado, tratando de recrear la tarea de importación de datos y/o el administrador de conexión. Si ha realizado algún cambio desde que la tarea se creó originalmente, esto a veces puede hacer el truco. Sé que es el equivalente a reiniciar, pero, si funciona, funciona.

Cuestiones relacionadas