sql >> Database >  >> RDS >> Sqlserver

Hoe schrijf ik UTF-8-tekens met bulk insert in SQL Server?

Ik kwam hier voordat ik op zoek was naar een oplossing voor het in bulk invoegen van speciale tekens. Ik vond de tijdelijke oplossing met UTF-16 niet leuk (dat zou de grootte van het csv-bestand verdubbelen). Ik ontdekte dat je dit zeker KAN en het is heel gemakkelijk, je doet het niet Je hebt geen formaatbestand nodig. Dit antwoord is voor andere mensen die hetzelfde zoeken, omdat het nergens goed gedocumenteerd lijkt te zijn, en ik geloof dat dit een veel voorkomend probleem is voor niet-engels sprekende mensen. De oplossing is:voeg gewoon CODEPAGE='65001' toe aan de met-instructie van de bulkinsert. (65001=codepaginanummer voor UTF-8). Werkt misschien niet voor alle unicode-tekens zoals gesuggereerd door Michael O, maar het werkt in ieder geval perfect voor latin-extended, grieks en cyrillisch, waarschijnlijk ook voor vele anderen.

Opmerking:MSDN-documentatie zegt dat utf-8 niet wordt ondersteund, geloof het niet, voor mij werkt dit perfect in SQL server 2008, ik heb echter geen andere versies geprobeerd.

bijv.:

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

Als al uw speciale tekens in 160-255 staan ​​(iso-8859-1 of windows-1252), kunt u ook het volgende gebruiken:

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


  1. Een overzicht van MariaDB Xpand (voorheen ClustrixDB)

  2. (-) streepje gebruiken in mysql-tabelnaam

  3. Automatisch schalen met Amazon Aurora Serverless

  4. 4 manieren om de database-sortering in MariaDB te krijgen