2010-01-13 25 views
9

Tôi có lệnh BCP này:BCP SQL Server: Cách đặt dấu ngoặc kép quanh tất cả các trường?

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

Sản lượng CSV tôi nhận được không đặt dấu ngoặc kép quanh các tên trường, thay vào đó nó đặt nó xung quanh dấu phẩy! Làm thế nào tôi có thể nhận được /t"\",\"" để đặt dấu ngoặc kép xung quanh tất cả các trường.

Cảm ơn tất cả

Trả lời

10

Thiết terminator hàng ngoài terminator lĩnh vực nên làm các trick

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

này có khả năng sẽ làm việc, nhưng bỏ lỡ trong những hàng đầu "cho trường đầu tiên của dòng đầu tiên và có lẽ là lần cuối cùng, tôi không chắc chắn, chỉ cần đoán thực sự, không có máy chủ nào ở đây!

hoặc thử sử dụng QUOTENAME để bao bọc các trường văn bản (bạn cũng có thể bao gồm các số, nhưng điều này thường không cần thiết.

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

có bao giờ một cách để có người đầu tiên và cuối cùng có dấu ngoặc kép -.. tôi thực sự cần một tập tin CSV được định dạng – Abs

+0

gì bạn đã xảy ra - nhưng cuối cùng fiedl đã có hai dấu ngoặc kép ở cuối và đầu tiên không có dấu ngoặc kép.Tôi chỉ cần fiddle với những điều trên để có được những gì tôi muốn? Có một số tài liệu tôi có thể nhìn như tôi đã không đi qua công cụ regex này - nếu nó là regex! – Abs

+0

bạn có thể sử dụng 'QUERYOUT' và sau đó tạo truy vấn bằng cách sử dụng' QUOTENAME (cột, '"')' cho trường văn bản. –

0

Câu trả lời hoàn toàn khả thi thực tế, mà loại bỏ các trích dẫn hàng đầu, là để:

A) tạo ra tập tin định dạng với BCP:

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

B) chỉnh sửa tập tin đó để sao chép trường 1 sang trường 0 ở trên theo cách thủ công, làm trường đầu tiên, hãy đặt Max_Length = 1 và xóa dấu tách và một quot là trong trường1

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

Bí quyết hoạt động, khi bạn thêm một trường (giao diện vào tệp) để phát hiện trình quét đầu tiên, kết quả là giá trị luôn rỗng, nhưng không thêm hàng (giao diện cho kết xuất truy vấn).

0

Dưới đây là danh sách các lệnh tôi đã sử dụng.

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) TỪ queryout atable "C: \ temp \ out.csv" -T -N -c/t" \", \ ""

này sẽ đặt dấu ngoặc kép trước và sau khi từng lĩnh vực (bao gồm cả đầu tiên và cuối cùng)

Các vấn đề liên quan