Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL Server BCP xuất tệp bị hỏng?

Cảm ơn chúa, cảm ơn câu trả lời của @ user_0 và câu trả lời và nhận xét khó hiểu của @ user3494351 và bài đăng trên diễn đàn cổ xưa này, cuối cùng tôi đã tìm ra điều này sau vài giờ đập đầu vào tường.

Vấn đề là BCP thích thêm 8 byte bổ sung vào tệp theo mặc định. Điều này làm hỏng tệp và khiến tệp không thể mở được nếu bạn chỉ sử dụng cờ -n gốc.

Tuy nhiên, BCP cho phép bạn chỉ định một tệp định dạng làm đầu ra có thể cho phép bạn yêu cầu nó không thêm 8 byte thừa. Vì vậy, tôi có một bảng mà tôi đã tạo (được sử dụng trong con trỏ) trong SQL Server chỉ có MỘT ROW và MỘT CỘT với dữ liệu nhị phân của tôi. Bảng phải tồn tại khi bạn chạy lệnh đầu tiên.

Trong dòng lệnh, trước tiên bạn cần thực hiện điều này:

bcp MyDatabase.MySchema.MyTempTable format nul -T -n -f formatfile.fmt

Điều này tạo ra formatfile.fmt trong thư mục bạn đang ở. Tôi đã làm trên ổ đĩa E:\. Đây là những gì nó trông như thế nào:

10.0
1
1       SQLBINARY           8       0       ""   1     MyColumn             ""

8 bên phải đó là biến mà bcp cho biết cần thêm bao nhiêu byte vào tệp của bạn. Đó là tên khốn đang làm hỏng các tệp của bạn. Thay đổi bộ hút đó thành 0:

10.0
1
1       SQLBINARY           0       0       ""   1     MyColumn             ""

Bây giờ chỉ cần chạy tập lệnh BCP của bạn, thả cờ -n và bao gồm cờ -f:

bcp "SELECT MyColumn FROM MyDatabase.MySchema.MyTempTable" queryout "E:\MyOutputpath" -T -f E:\formatfile.fmt


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng DB_ID () để trả về ID của cơ sở dữ liệu trong SQL Server

  2. Tìm hiểu cách Thực hiện Phân tích Sản phẩm với Tìm kiếm Toàn văn của Máy chủ SQL. Phần 2

  3. Những tài nguyên nào tồn tại để điều chỉnh hiệu suất Cơ sở dữ liệu?

  4. TSQL:Tạo một dạng xem truy cập nhiều cơ sở dữ liệu

  5. Trả về tất cả các khóa ngoại tham chiếu đến một bảng đã cho trong SQL Server