2010-11-08 14 views
15

Tengo un archivo CSV que estoy importando directamente a una tabla de servidor SQL. En el archivo CSV, cada columna está separada por una coma. Pero mi problema es que tengo una "dirección" de columna, y los datos en esta columna contienen comas. Entonces, lo que está sucediendo es que algunos de los datos de la columna de dirección van a las otras columnas importando al servidor SQL.Comas dentro de los datos CSV

¿Qué debo hacer?

+0

No se puede utilizar otro carácter para separar sus valores, como por ejemplo '; '? – romaintaz

+0

@romaintaz: esa es la manera incorrecta de manejar comas. Good csv usa comillas, y luego escapa de la cita consigo misma. –

+0

Me han proporcionado CSV como estos y tengo que manejar eso. – Sidharth

Respuesta

15

Si hay una coma en una columna, esa columna debe estar rodeada por una comilla simple o comilla doble. Entonces, si el interior de la columna hay una comilla simple o doble que debe tener una carta de escape antes de que, por lo general un formato Ejemplo \

de CSV

 
ID - address - name 
1, "Some Address, Some Street, 10452", 'David O\'Brian' 
+1

+1 esta es la forma correcta de hacerlo. Pero "CSV" es tan informal que la gente hace todo tipo de cosas locas. –

+0

@gmagana - estoy de acuerdo, recuerdo cuando lo usé por primera vez, tuve todo tipo de dolores de cabeza hasta que entendí las 3 cosas principales. 1) necesita un terminador de campo, generalmente una coma, 2) necesita un campo adjunto por lo general una comilla doble, lo mejor es encerrar todos los campos entre comillas dobles a menos que se trate de enteros y 3) necesita un caracter de escape en caso de que use un campo Encerrar dentro de un campo, generalmente un \. Formatee su csv así y su vida será mucho más fácil :) – Brady

+0

¿Cómo puedo verificar esto cuando estoy importando directamente CSV a SQL Server. – Sidharth

1

Sugeriría utilizar otro formato distinto de CSV o intentar usar otros caracteres como separador de campo y/o delimitador de texto. Intenta buscar un personaje que no se use en tus datos, p. |, #,^o @. El formato de una sola fila se convertiría en

|foo|,|bar|,|baz, qux| 

Un bien se comportan analizador no debe interpretar 'baz' y 'QUX' como dos columnas.

Alternativamente, podría escribir su propio vudú de importación que resuelva cualquier problema. Para la tarde, es posible encontrar este Groovy skeleton útil (no estoy seguro de lo que estás idiomas con fluidez, aunque)

1

mayoría de los sistemas, incluyendo Excel, permitirá a los datos de la columna a ser encerrado entre comillas simples ...

col1, col2, col3 'test1', 'mi test2, la coma', test3

Otra alternativa es utilizar la versión Macintosh de CSV, que utiliza TAB es como delimitadores.

0

no creo que la adición de cotización podría help.The La mejor manera que sugiero es reemplazar la coma en el contenido con otras marcas como espacio o algo.

replace(COLUMN,',',' ') as COLUMN 
1

La mejor manera, más rápida y más fácil de resolver el coma en cuestión de los datos es el uso de Excel para guardar un archivo separado por comas después de haber establecido configuración separador de listas de Windows para algo que no sea una coma (tal como un tubo) Esto generará una tubería (o lo que sea) archivo separado para usted que luego podrá importar. Esto se describe here.

0

Adjuntar una marca de voz en la columna de selección en ambos trabajos laterales. También debe convertir la columna como NVARCVHAR (MAX) para convertir esto en una cadena si la columna es un TEXTO.

SQLCMD -S DB-SERVER -E -Q "set nocount on; set ansi_warnings off; SELECT '""' + cast ([Column1] as nvarchar(max)) + '""' As TextHere, [Column2] As NormalColumn FROM [Database].[dbo].[Table]" /o output.tmp /s "," -W 
23

para este problema, la solución es muy simple. primero seleccione => origen de archivo plano => busque su archivo => de ir a la "calificador de texto" por defecto su ninguno escribir aquí comillas dobles como (") y siga las instrucciones del asistente

pasos son. - first select => fuente de archivo plano => explore su archivo => Calificador de texto (solo escriba ") y siga las instrucciones del asistente.

buena suerte

+5

¡gracias! Esta es la respuesta correcta, y es muy fácil. –

+1

Nunca me encontré con esto antes de hoy. Esta es la respuesta correcta para mí. – durbnpoisn

+1

esto también funcionó para mí. ¡qué error tan absurdo y confuso en la parte de SSMS! – Ben

Cuestiones relacionadas