2010-01-13 20 views
9

que tienen este comando BCP:SQL Server BCP: ¿Cómo poner citas en todos los campos?

'bcp DBName..vieter out c:\test003.txt -c -T /t"\",\"" -S SERVER' 

La salida CSV consigo no pone comillas alrededor de los nombres de campo, sino que pone alrededor de las comas! ¿Cómo puedo obtener el /t"\",\"" para poner comillas en todos los campos?

Gracias a todos

Respuesta

10

Ajuste del terminador de fila, además del terminador de campo debe hacer el truco

'bcp DBName..vieter out c:\test003.txt -c -T -t"\",\"" -r"\"\n\"" -S SERVER' 

Esto probablemente va a funcionar, pero la señorita del líder "para el primer campo de la primera línea , y tal vez el último de los últimos, no estoy seguro, solo estoy adivinando, ¡no hay servidor aquí!

o intente utilizar QUOTENAME para ajustar los campos de texto (también podría ajustar los números, pero eso normalmente no es necesario).

'bcp "SELECT id, age, QUOTENAME(name,'"') FROM DBName..vieter" queryout c:\test003.txt -c -T -t"," -S SERVER' 
+0

¿hay siempre una manera de tener el primer y último tienen citas -.. realmente necesito un archivo CSV con buen formato – Abs

+0

lo que dijo que sucedió, pero el último fiedl tenía dos citas al final y el primero no tenía citas. ¿Tengo que jugar con lo anterior para obtener lo que quiero? ¿Hay algunos documentos que puedo ver ya que no me he encontrado? esto regex cosas - si es regex! – Abs

+0

puede usar 'QUERYOUT' y luego crear una consulta usando' QUOTENAME (column, '"')' para los campos de texto. –

0

La respuesta viable real, que elimina la cita que lleva, es:

A) generar el archivo de formato con BCP:

bcp db.schema.tabel format nul -c -x -f file.xml -t"\",\"" -r"\"\r\n" -T -k 

B) editar ese archivo copiar manualmente campo 1 a campo 0 anteriormente, como el primer campo, ajuste max_length = 1 y quitar el separador y uno quot la era en campo1

<FIELD ID="0" xsi:type="CharTerm" TERMINATOR="\&quot;" MAX_LENGTH="1" COLLATION="SQL_Latin1_General_CP1_CI_AS"/> 

El truco funciona, ya que está agregando un campo (interfaz al archivo) para detectar el primer seprator, lo que da como resultado un valor siempre nulo, pero no agrega una fila (interfaz para la salida de consulta).

0

Aquí está la lista de comandos que utilicé.

BCP "DECLARE @colnames VARCHAR(max);SELECT @colnames = COALESCE(@colnames + ',', '') + column_name from databaseName.INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='tableName'; select @colnames;" queryout "C:\HeadersOnly.csv" -r"\n\"" -c -T -Uusername -Ppassword -SserverName 

bcp databaseName.schema.tableName out "C:\EmployeeDatawithoutheaders.csv" -T -t"\",\"" -r"\"\n\"" -c -Uusername -Ppassword -SserverName 

copy /b C:\HeadersOnly.csv+C:\EmployeeDatawithoutheaders.csv C:\EmployeeData.csv 

del C:\HeadersOnly.csv 

del C:\EmployeeDatawithoutheaders.csv 
1

BCP "SELECT char (34) + + * char (34) a partir de queryout hinchable "C: \ temp \ out.csv" -T -N -c/t" \", \ ""

Esto poner comillas antes y después de cada campo (incluyendo el primero y el último)

Cuestiones relacionadas