MSSQL Server 2008 UTF-8 BULK INSERT

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 :smile:

Gruß Olli

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 :smile:

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

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

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é

Hallo olli,
habe in der Richtung noch nie etwas gemacht (da ich Programmierer bin schreibe ich mir bei Bedarf etwas selbst :wink:, 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

Schau mal hier hinein:
http://msdn.microsoft.com/en-us/library/ms190312.aspx

Gruß
Hans

Hallo und Entschuldigung, dass ich nicht geantwortet habe; mein Profil war deaktiviert!