sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan skriver man UTF-8-tegn ved hjælp af bulkinsert i SQL Server?

Jeg kom her, før jeg ledte efter en løsning til masseindsættelse af specialtegn. Kunne ikke lide løsningen med UTF-16 (det ville fordoble størrelsen af ​​csv-filen). Jeg fandt ud af, at du bestemt KAN, og det er meget nemt, du gør det Jeg har ikke brug for en fil i formatet. Dette svar er til andre, der leder efter det samme, da det ikke ser ud til at være dokumenteret godt nogen steder, og jeg tror, ​​at dette er et meget almindeligt problem for ikke-engelsktalende mennesker. Løsningen er:bare tilføj CODEPAGE='65001' inde i med-erklæringen for bulk-indsatsen. (65001=kodesidenummer for UTF-8). Virker muligvis ikke for alle unicode-tegn som foreslået af Michael O, men det fungerer i det mindste perfekt til latin-udvidet, græsk og kyrillisk, sikkert også mange andre.

Bemærk:MSDN-dokumentationen siger, at utf-8 ikke understøttes, tro det ikke, for mig fungerer dette perfekt i SQL server 2008, prøvede dog ikke andre versioner.

f.eks.:

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

Hvis alle dine specialtegn er i 160-255 (iso-8859-1 eller windows-1252), kan du også bruge:

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


  1. GUI-værktøj til PostgreSQL

  2. SQL-forespørgsel for at få alle værdier en enum kan have

  3. Sådan undslipper du enkelt citat, specielle tegn i MySQL

  4. Foretrukken metode til lagring af adgangskoder i databasen