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

Làm thế nào để viết các ký tự UTF-8 bằng cách sử dụng chèn hàng loạt trong SQL Server?

Tôi đến đây trước khi tìm giải pháp để chèn hàng loạt ký tự đặc biệt. Tôi không thích cách giải quyết khác với UTF-16 (sẽ tăng gấp đôi kích thước của tệp csv). Không cần tệp định dạng. Câu trả lời này dành cho những người khác đang tìm kiếm tệp tương tự, vì nó dường như không được ghi chép tốt ở bất kỳ đâu và tôi tin rằng đây là một vấn đề rất phổ biến đối với những người không nói tiếng Anh. Giải pháp là:chỉ cần thêm CODEPAGE ='65001' bên trong câu lệnh with của chèn số lượng lớn. (65001 =codepage number cho UTF-8) .Might không hoạt động với tất cả các ký tự unicode như Michael O đề xuất, nhưng ít nhất nó hoạt động hoàn hảo cho các ký tự mở rộng latin, Hy Lạp và cyrillic, có thể là nhiều ký tự khác.

Lưu ý:Tài liệu MSDN nói rằng utf-8 không được hỗ trợ, đừng tin vào điều đó, đối với tôi điều này hoạt động hoàn hảo trong SQL server 2008, tuy nhiên, tôi không thử các phiên bản khác.

ví dụ:

BULK INSERT #myTempTable 
FROM  'D:\somefolder\myCSV.txt'+
WITH 
    ( 
        CODEPAGE = '65001',
        FIELDTERMINATOR = '|',
        ROWTERMINATOR ='\n'
    );

Nếu tất cả các ký tự đặc biệt của bạn ở 160-255 (iso-8859-1 hoặc windows-1252), bạn cũng có thể sử dụng:

BULK INSERT #myTempTable 
FROM  'D:\somefolder\myCSV.txt'+
WITH 
    ( 
        CODEPAGE = 'ACP',
        FIELDTERMINATOR = '|',
        ROWTERMINATOR ='\n'
    );


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khắc phục Msg 241 “Chuyển đổi không thành công khi chuyển đổi ngày và / hoặc thời gian từ chuỗi ký tự” trong SQL Server

  2. Cách ánh xạ nhiều phân vùng thành một nhóm tệp trong SQL Server (T-SQL)

  3. Cách vô hiệu hóa ràng buộc khóa ngoại trong SQL Server (Ví dụ T-SQL)

  4. Cách sử dụng câu lệnh IF / ELSE để cập nhật hoặc tạo mục nhập nút xml mới trong Sql

  5. Chọn kích thước cơ sở dữ liệu SQL Server