Bulk Insert mit Unicode-Textdateien

01/12/2007 - 02:54 von Ralph Schlosser | Report spam
Hallo NG!

Ich erhalte von einer OCR-Software Unicode-Textdateien (Startbytes FF FE),
die ich in eine Tabelle mit einem TEXT-Feld einlesen möchte. Ich habe mich
für eine BULK-INSERT-Lösung entschieden mit einer temporàren
Zwischentabelle.
Das sieht dann etwa so aus:

CREATE TABLE #ScanText (OCR_Text TEXT)

BULK INSERT #ScanText
FROM 'C:\MyPath\MyFile.txt'
WITH (CODEPAGE = 'RAW', FIELDTERMINATOR = '\\FTrennung\\',
ROWTERMINATOR = '\\ZTrennung\\')

SELECT OCR_Text FROM #ScanText

Da ich den gesamten Inhalt der Datei in einem Feld benötige, habe ich als
potenzielle Trennzeichenfolgen definitv nicht vorkommende angegeben.
Nun tritt beim SQL Server 2000 SP4 das Problem auf, dass dieser Code
funktioniert, wenn die Textdatei eine ungerade Anzahl von Zeichen enthàlt.
Bei gerader Anzahl von Zeichen wird nichts eingelesen, es erscheint aber
auch keinerlei Fehlermeldung. Dies ist in jeder mir zur Verfügung stehenden
SQL-2000-SP4-Umegbung nachzuvollziehen.

Kennt jemand eine Lösung des Problems? Oder eine einfach zu handhabende
Alternative zum Einlesen von Textdateien.

Übrigens besteht das Problem nicht mehr beim SQL Server 2005. Ebenso
wenig besteht es bei Verwendung von ANSI-Textdateien. Leider kann ich weder
auf die eine noch auf die andere Lösung im Umfeld meines Kunden zurück-
greifen.

Besten Dank im Voraus,
Ralph.
 

Lesen sie die antworten

#1 Christoph Schneegans
03/12/2007 - 11:12 | Warnen spam
Ralph Schlosser schrieb:

Ich erhalte von einer OCR-Software Unicode-Textdateien (Startbytes FF FE),
die ich in eine Tabelle mit einem TEXT-Feld einlesen möchte.



Also UTF-16 Little Endian.

CREATE TABLE #ScanText (OCR_Text TEXT)

BULK INSERT #ScanText
FROM 'C:\MyPath\MyFile.txt'
WITH (CODEPAGE = 'RAW', FIELDTERMINATOR = '\\FTrennung\\',
ROWTERMINATOR = '\\ZTrennung\\')

SELECT OCR_Text FROM #ScanText

(...) Bei gerader Anzahl von Zeichen wird nichts eingelesen, es erscheint aber
auch keinerlei Fehlermeldung. Dies ist in jeder mir zur Verfügung stehenden
SQL-2000-SP4-Umegbung nachzuvollziehen.



Ja, hier auch. Der Fehler tritt allerdings nicht auf, wenn ich ein (N)VARCHAR-
anstelle eines (N)TEXT-Feldes verwende.

<http://schneegans.de/lv/> · Validator für "language tags" gemàß RFC 4646

Ähnliche fragen