sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man skriver UTF-8-tecken med hjälp av bulkinsert i SQL Server?

Jag kom hit innan jag letade efter en lösning för massinsättning av specialtecken. Gillade inte lösningen med UTF-16 (som skulle fördubbla storleken på csv-filen). Jag fick reda på att du definitivt KAN och det är väldigt enkelt, du gör det Jag behöver inte en fil i formatet. Det här svaret är för andra som letar efter samma sak, eftersom det inte verkar dokumenteras väl någonstans, och jag tror att detta är ett mycket vanligt problem för icke-engelsktalande personer. Lösningen är:lägg bara till CODEPAGE='65001' inuti med-satsen för bulkinsert. (65001=sidnummer för UTF-8). Det kanske inte fungerar för alla unicode-tecken som Michael O föreslår, men det fungerar åtminstone perfekt för latin, grekiska och kyrilliska, förmodligen många andra också.

Notera:MSDN-dokumentationen säger att utf-8 inte stöds, tror inte det, för mig fungerar detta perfekt i SQL Server 2008, försökte dock inte andra versioner.

t.ex.:

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

Om alla dina specialtecken är i 160-255 (iso-8859-1 eller windows-1252), kan du också använda:

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


  1. Bästa metoder för MySQL-replikering

  2. Introduktion till SQL Server 2017

  3. Ändra PostgreSQL-kolumner som används i vyer

  4. Infoga bild i SQL Server 2005 Image Field med endast SQL