sql >> Databáze >  >> RDS >> Sqlserver

Jak zapsat znaky UTF-8 pomocí hromadného vkládání na SQL Server?

Přišel jsem sem, než jsem hledal řešení pro hromadné vkládání speciálních znaků. Nelíbilo se mi řešení s UTF-16 (to by zdvojnásobilo velikost souboru csv). Zjistil jsem, že určitě MŮŽETE a je to velmi snadné, ne Nepotřebuji formátový soubor. Tato odpověď je pro ostatní lidi, kteří hledají totéž, protože se nezdá, že by to bylo nikde dobře zdokumentováno, a věřím, že je to velmi častý problém pro neanglicky mluvící lidi. Řešením je:stačí přidat CODEPAGE='65001' dovnitř příkazu with hromadného vložení. (65001=číslo kódové stránky pro UTF-8). Nemusí fungovat pro všechny znaky Unicode, jak navrhuje Michael O, ale alespoň to funguje perfektně pro latinku, řečtinu a cyrilici, pravděpodobně také pro mnoho dalších.

Poznámka:Dokumentace MSDN říká, že utf-8 není podporováno, nevěřte tomu, pro mě to na serveru SQL Server 2008 funguje perfektně, jiné verze jsem však nezkoušel.

např.:

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

Pokud jsou všechny vaše speciální znaky v 160-255 (iso-8859-1 nebo windows-1252), můžete také použít:

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


  1. Jak se mohu zbavit těchto komentářů ve výpisu MySQL?

  2. Oracle - doslovný neodpovídá chyba formátovacího řetězce

  3. Spustit spouštěč při aktualizaci sloupce A nebo ColumnB nebo ColumnC

  4. Jak vytvořit a nasadit Azure Database for MySQL Server pomocí Azure Portal a Workbench