sql >> データベース >  >> RDS >> Sqlserver

SQL Serverで一括挿入を使用してUTF-8文字を書き込む方法は?

    特殊文字を一括挿入するための解決策を探す前にここに来ました。UTF-16(csvファイルのサイズが2倍になる)の回避策が気に入らなかったのですが、間違いなく可能であり、非常に簡単であることがわかりました。フォーマットファイルが必要です。この回答は、どこにも文書化されていないように見えるため、同じものを探している他の人向けです。これは、英語を話さない人にとっては非常に一般的な問題だと思います。解決策は次のとおりです。一括挿入のwithステートメント内にCODEPAGE='65001'を追加するだけです。 (65001 =UTF-8のコードページ番号)Michael Oが提案したように、すべてのUnicode文字で機能するとは限りませんが、少なくともラテン文字拡張、ギリシャ語、キリル文字、おそらく他の多くの文字にも最適です。

    注:MSDNのドキュメントには、utf-8はサポートされていないと記載されていますが、信じられません。これはSQL Server 2008で完全に機能しますが、他のバージョンは試していません。

    例:

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

    すべての特殊文字が160-255(iso-8859-1またはwindows-1252)である場合は、次を使用することもできます:

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


    1. PostgreSQLの日付から年を引く

    2. MaxScaleのフェイルオーバーメカニズムの使用方法

    3. SQLite onUpgrade()のフラストレーション

    4. SQLクエリデータをExcelにエクスポートする