Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak pisać znaki UTF-8 za pomocą wstawiania zbiorczego w programie SQL Server?

Przyszedłem tutaj, zanim szukałem rozwiązania do zbiorczego wstawiania znaków specjalnych. Nie podobało mi się obejście z UTF-16 (które podwoiłoby rozmiar pliku csv). Dowiedziałem się, że zdecydowanie MOŻESZ i jest to bardzo łatwe, nie Potrzebuję pliku formatu. Ta odpowiedź jest dla innych osób, które szukają tego samego, ponieważ nie wydaje się, aby była ona nigdzie dobrze udokumentowana, i uważam, że jest to bardzo częsty problem dla osób nie mówiących po angielsku. Rozwiązaniem jest:po prostu dodaj CODEPAGE='65001' wewnątrz instrukcji z wstawką zbiorczą. (65001=numer strony kodowej dla UTF-8). Może nie działać dla wszystkich znaków Unicode, jak sugerował Michael O, ale przynajmniej działa idealnie dla rozszerzonego alfabetu łacińskiego, greckiego i cyrylicy, prawdopodobnie także wielu innych.

Uwaga:dokumentacja MSDN mówi, że utf-8 nie jest obsługiwany, nie wierz w to, dla mnie działa to idealnie w SQL Server 2008, jednak nie próbowałem innych wersji.

np.:

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

Jeśli wszystkie twoje znaki specjalne są w 160-255 (iso-8859-1 lub windows-1252), możesz również użyć:

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. DATEDIFF_BIG() Przykłady w SQL Server

  2. Różnica między sys.columns, sys.system_columns i sys.all_columns w programie SQL Server

  3. varbinary do ciągu w SQL Server

  4. Jaki jest najlepszy sposób na zaimplementowanie asocjacji polimorficznej w SQL Server?

  5. Jak zmienić program SQL Server 2005, aby uwzględniał wielkość liter?