2009-04-02 14 views
6

Tengo un archivo CSV con delimitadores de texto de comillas. La mayoría de las 90000 filas están bien, pero tengo algunas filas que tienen un campo de texto que contiene tanto una comilla como una comilla. Por ejemplo, el valor de los campos sería:SQL 2005 Cita de importación CSV delimitada con comillas internas y comas

AB "AB

Cuando delimitado esto se convierte en

"AB"," AB"

Cuando SQL 2005 intenta importar esto me sale errores como ...

Messages 
Error 0xc0202055: Data Flow Task: The column delimiter for column "Column 4" was not found. 
(SQL Server Import and Export Wizard)

Esto solo parece suceder cuando una comilla y un coman están juntos en un valor de texto. Valores como

AB "AB que se convierte en "AB"" AB" o AB, AB, que se convierte en "AB, AB" bien

trabajo.

Estos son algunos ejemplos de las filas ...

 
"1464885","LEVER WM","","B","MP17" 
"1465075",":PLT-BC !!NOTE!!","","B","" 
"1465076","BRKT-STR MTR   !NOTE!","","B","" 
"1465172",":BRKT-SW MTG !NOTE!","","B","MP16" 
"1465388","BUSS BAR    !NOTE!","","B","MP10" 
"1465391","PLT-BLKHD  ""NOTE""","","B","MP20" 
"1465564","SPROCKET:13TEETH,74MM OD,66MM","ID W/.25"" SETSCR","B","MP6" 
"S01266330002","CABLE:224"",E122/261,8 CO","","B","MP11" 

la última fila es un ejemplo del problema - la "", hace que el error

Respuesta

0

me acaba de hacer una búsqueda/reemplazo de.", y sustituirlo con,

¿Tiene acceso al archivo original?

+0

No, solo tengo acceso al archivo de importación. También el archivo está lleno de ", o" ", que son válidos. Aquí hay algunas filas de ejemplo ... " 1465564 "," PIÑÓN: 13TEETH, 74MM OD, 66MM OD, 66MM "," ID W/.25 "" SETSCR " "B", "MP6" "S01266330002", "CABLE: 224"", E122/261,8 CO", "", "B", "MP11" segunda fila es –

1

¿Qué tal:

  1. Buscar/reemplazar todos "", con ''; (arregle todos los campos rotos)
  2. Buscar/reemplazar todo; ''; con, "", (para "eliminar" campos debidamente vacíos)
  3. Buscar/reemplazar todos los ''; ''; con "", "", (a "unfix" campos correctamente vacíos que siguen una encapsulación correcto de delimitadores embebidos.)

que convierte su original a:

"1464885","LEVER WM","","B","MP17" 
"1465075",":PLT-BC !!NOTE!!","","B","" 
"1465076","BRKT-STR MTR   !NOTE!","","B","" 
"1465172",":BRKT-SW MTG !NOTE!","","B","MP16" 
"1465388","BUSS BAR    !NOTE!","","B","MP10" 
"1465391","PLT-BLKHD  ""NOTE""","","B","MP20" 
"1465564","SPROCKET:13TEETH,74MM OD,66MM","ID W/.25"" SETSCR","B","MP6" 
"S01266330002","CABLE:224'';E122/261,8 CO","","B","MP11" 

que parece correr el guante bien en SSIS. Es posible que tenga que realizar el paso 3 recursivamente para dar cuenta de 3 campos vacíos en una fila (''; ''; '' ;, etc.), pero la conclusión es que cuando tiene calificadores de texto incrustados, debe o bien escapar de ellos o reemplazarlos. Deje que esto sea una lección en sus procesos de creación de CSV en el futuro.

+0

En otro comentario, el OP dice que solo tiene acceso al archivo de importación, no a la creación de CSV. Además, su respuesta cambia los datos (comillas dobles a comillas simples), por lo que esto realmente no resuelve el problema de cómo importar estos datos. – goodeye

4

He tenido problemas importantes con SSIS. Las cosas que Access, Excel e incluso DTS parecían funcionar muy bien, SSIS se ahoga. Los datos variables de longitud de registro son otro problema, pero sí, estos calificadores incrustados son un problema importante. ¡Especialmente si no tienes acceso a los archivos de importación porque están en el servidor de otra persona a los que pagas para obtener acceso e incluso pueden tener un tamaño de 4 a 5 GB! No puedo simplemente "reemplazar todo" en cada importación.

Es posible que desee comprobar esto en Descargas de Microsoft llamado "UnDouble" y aquí hay otro workaround que puede probar.

Parece que con SSIS en SQL Server 2008, el error sigue ahí. No sé por qué no han abordado esto en el analizador, pero es como si hubiésemos retrocedido en el tiempo con SSIS en la funcionalidad de importación básica.

ACTUALIZACIÓN 11-18-2010: Este error todavía existe en SSIS. Asombroso.

1

Microsoft says dobles comillas dobles dentro de los campos delimitados por doble comilla simplemente no funcionan. Se ha planificado una solución para finales de 2011 ...

Mientras tanto, tendremos que usar soluciones alternativas como se describe en las otras respuestas.

+0

Aún no se ha solucionado ... – NotMe

Cuestiones relacionadas