MSSQL Server 2008 UTF-8 BULK INSERT

Von: , 17.04.2012 16:55 Uhr

Hallo zusammen,

ich möchte gerne eine Textdatei in den SQL Server importieren. Dafür habe eine Tabelle mit NVARCHAR, INT und FLOAT Feldern angelegt.
Außerdem habe ich eine XML Datei in welcher die einzelnen Spalten definiert sind.
Über einen Bulk Insert lade ich die Daten dann entsprechend in die Tabelle.

SELECT FIELD1,FIELD2,FIELD3,FIELD4,FIELD5 FROM
openrowset (bulk 'W:\DATA.TXT',
FORMATFILE='W:\XML\DATA.TXT.XML', MAXERRORS=10000000,
CODEPAGE='1250') as test

Wenn die Datei eine UTF-8 Datei ist, kann ich diese Datei dann durch die Angabe der Codepage importieren?
Welche Codepage müsste ich denn dafür nehmen?
Habe etwas von 65001 gelesen aber diese funktioniert irgendwie gar nicht.

Mein Problem ist, dass ich oft entweder Textdateien im DOS Format oder U-8 DOS Format geliefert bekomme. Diese müsste ich dann erst manuell oder durch eine weitere Software konvertieren wodurch ich unter unter Umständen die Unicode-Fähigkeit verliere.

Mal sehen ob mir hier geholfen werden kann :-)

Gruß Olli

5 Antworten zu dieser Frage

  1. Antwort von nach 2 Stunden 0 hilfreich
    Re: MSSQL Server 2008 UTF-8 BULK INSERT


    Hallo,




    ich möchte gerne eine Textdatei in den SQL Server importieren.
    Dafür habe eine Tabelle mit NVARCHAR, INT und FLOAT Feldern
    angelegt.
    Außerdem habe ich eine XML Datei in welcher die einzelnen
    Spalten definiert sind.
    Über einen Bulk Insert lade ich die Daten dann entsprechend in
    die Tabelle.

    SELECT FIELD1,FIELD2,FIELD3,FIELD4,FIELD5 FROM
    openrowset (bulk 'W:\DATA.TXT',
    FORMATFILE='W:\XML\DATA.TXT.XML', MAXERRORS=10000000,
    CODEPAGE='1250') as test

    Wenn die Datei eine UTF-8 Datei ist, kann ich diese Datei dann
    durch die Angabe der Codepage importieren?
    Welche Codepage müsste ich denn dafür nehmen?
    Habe etwas von 65001 gelesen aber diese funktioniert irgendwie
    gar nicht.

    Mein Problem ist, dass ich oft entweder Textdateien im DOS
    Format oder U-8 DOS Format geliefert bekomme. Diese müsste ich
    dann erst manuell oder durch eine weitere Software
    konvertieren wodurch ich unter unter Umständen die
    Unicode-Fähigkeit verliere.

    Mal sehen ob mir hier geholfen werden kann :-)
    Hier:
    http://msdn.microsoft.com/de-de/library/ms188365.aspx

    schließt MS die Verwendung von UTF-8 beim Bulk Insert definitiv aus...


    Gruß
    Franz, DF6GL

  2. Antwort von nach 15 Stunden 0 hilfreich
    Re: MSSQL Server 2008 UTF-8 BULK INSERT

    Hallo Olli,

    ich bin mir nicht sicher, ob ich dir weiterhelfen kann, da ich "meine" Bulk-Inserts noch immer über eine Text - Formatdatei steuere.
    Als Codepage gebe ich immer CODEPAGE = '1252' an
    aber abhängig davon, ob es sich um Unicode handelt, verwende ich eine andere Formatdatei mit den folgenden Änderungen:

    Folgende Anpassungen müssen in den Formatdateien zum Einlesen von Daten in UNICODE vorgenommen werden:

    SQLCHAR => SQLNCHAR
    ";" => ";\0"
    "\r\n" => "\r\0\n\0"

    und

    alle Feldlängen der nvarchar – Felder müssen verdoppelt werden !


    vielleicht hilt dir das ja weiter.

    mit freundlichem Gruß
    Ulrich Meier

  3. Antwort von nach 15 Stunden 0 hilfreich
    Re: MSSQL Server 2008 UTF-8 BULK INSERT

    Hallo,

    bin auf diesem Gebiet auch nicht ganz so fit. Ich habe aber mal beim XML-Import folgende Codepage genutzt:

    <?xml version="1.0" encoding="ISO-8859-1"?>

    Gruß André

  4. Antwort von nach 16 Stunden 0 hilfreich
    Re: MSSQL Server 2008 UTF-8 BULK INSERT

    Hallo olli,
    habe in der Richtung noch nie etwas gemacht (da ich Programmierer bin schreibe ich mir bei Bedarf etwas selbst ;), das ist in ein paar Minuten erledigt). Habe aber auf der Seite http://msdn.microsoft.com/de-de/library/ms188365.aspx kurz nachgelesen und einige interessante Infos gefunden. Z.B. dass Pagecode 65001 vom SQL-Server offenbar nicht unterstützt wird. Ansonsten würde ich das "übliche" Spiel machen: try and Error - sprich austesten und die Fehlermeldungen bzw. das Ergebnis analysieren. Vermutlich wird es sowieso schwierig wenn du unterschiedliche Formate erhältst.

    Gruß
    Marcus

  5. Jetzt auf diese Frage antworten.