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

Làm cách nào để tạo tập lệnh INSERT cho bảng có trường VARBINARY (MAX)?

Nếu đây là việc một lần (hoặc hiếm khi) phải làm, bạn có thể thử lấy dữ liệu ra từ Trình hướng dẫn SSMS như được mô tả tại đây:

http:/ /sqlblog.com/blogs/eric_johnson/archive/2010/03/08/script-data-in-sql-server-2008.aspx

Hoặc, nếu bạn cần thực hiện việc này thường xuyên và muốn tự động hóa nó, bạn có thể thử SQL # Thư viện SQLCLR (mà tôi đã viết và mặc dù hầu hết nó là miễn phí, nhưng chức năng bạn cần ở đây thì không). Hàm để thực hiện việc này là DB_DumpData và nó cũng tạo ra INSERT tuyên bố.

Nhưng một lần nữa, nếu đây là nhiệm vụ một lần hoặc không thường xuyên, thì hãy thử trình hướng dẫn xuất dữ liệu được tích hợp trong Management Studio. Điều đó sẽ cho phép bạn sau đó tạo tập lệnh SQL mà bạn có thể chạy trong Sản xuất. Tôi vừa thử nghiệm điều này trên bảng có VARBINARY(MAX) trường chứa 3,365,964 byte dữ liệu và trình hướng dẫn Tạo Tập lệnh đã tạo INSERT câu lệnh với toàn bộ chuỗi hex gồm 6,73 triệu ký tự cho một giá trị đó.

CẬP NHẬT:
Một cách nhanh chóng và dễ dàng khác để thực hiện việc này theo cách cho phép bạn sao chép / dán toàn bộ câu lệnh INSERT vào tập lệnh SQL và không phải bận tâm đến BCP hoặc SSMS Export Wizard là chỉ cần chuyển đổi giá trị thành XML . Đầu tiên bạn phải CONVERT VARBINARY thành VARCHAR(MAX) sử dụng kiểu tùy chọn "1" cung cấp cho bạn một chuỗi hex bắt đầu bằng "0x". Khi bạn có chuỗi hex của dữ liệu nhị phân, bạn có thể nối chuỗi đó vào một INSERT và toàn bộ nội dung đó, khi được chuyển đổi thành XML , có thể chứa toàn bộ VARBINARY đồng ruộng. Xem ví dụ sau:

DECLARE @Binary VARBINARY(MAX) = CONVERT(VARBINARY(MAX),
                                         REPLICATE(
                                           CONVERT(NVARCHAR(MAX), 'test string'),
                                           100000)
                                        )

SELECT 'INSERT INTO dbo.TableName (ColumnName) VALUES ('+
       CONVERT(VARCHAR(MAX), @Binary, 1) + ')' AS [Insert]
FOR XML RAW;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tôi có thể sử dụng câu lệnh CASE trong điều kiện JOIN không?

  2. T-SQL:Làm thế nào để Chọn Giá trị trong Danh sách Giá trị KHÔNG CÓ TRONG Bảng?

  3. Không thể đăng nhập vào SQL Server bằng Windows Authentication

  4. Cách tạo lập trình sao lưu toàn bộ cơ sở dữ liệu SQL Server 2008 trong thư mục mong muốn

  5. Cách chuyển đổi phân cấp lồng nhau của xml sang bảng sql