BULK INSERT: Maskierung von Spaltentrennzeichen

11/04/2008 - 09:10 von Sebastian Bauer | Report spam
Hallo Newsgroup,

ich benutzt die BULK INSERT Anweisung, um Daten aus Textdateien in den SQL
Server 2000 zu importieren. Als Trennzeichen verwende ich das "|" (pipe)
Symbol.
Nun gibt es in manchen textbasierten Spalten den Fall, dass das Trennzeichen
Teil des Feldinhalts ist.
Versuche ich eine Datei mit Trennzeichen im Textbereich zu importieren, dann
wirft der BULK INSERT einen Fehler.
Nach Recherche bin ich auf folgende zwei Artikel gestoßen:

http://msdn2.microsoft.com/en-us/li...88609.aspx
und
http://technet.microsoft.com/en-us/...97067.aspx

In beiden Artikeln wird beschrieben, dass man die Werte mit doppeltem
Hochkommata einschließen kann.
Wörtlich:
"The string data should be optionally enclosed in double quotation marks (")
in case there are commas in the column data."

Leider funktioniert dies bei mir nicht und der BULK INSERT wirft immer noch
einen Fehler.
Nachfolgend der Inhalt einer Beispieldatei ( "pipe|test" ist ein Datensatz
und soll nicht als Trennzeichen erkannt werden):

1|pipe|test|01/01/2008|15.020000|
2|normal|12/12/2008|3.000000|

Auch wenn ich eine oder alle Spalten in Hochkommata einschließe, wirft BULK
INSERT noch einen Fehler:

1|"pipe|test"|01/01/2008|15.020000|
2|"normal"|12/12/2008|3.000000|

oder

"1"|"pipe|test"|"01/01/2008"|"15.020000"|
"2"|"normal"|"12/12/2008"|"3.000000"|

Der Aufruft des BULK INSERT lautet dabei wie folgt:

BULK INSERT bulk_test from 'D:\bulk_test\bulk_test.dat'
with
(
DATAFILETYPE = 'char',
CHECK_CONSTRAINTS,
FIELDTERMINATOR ='|',
ROWTERMINATOR ='|',
FIRSTROW = 1,
FIRE_TRIGGERS,
MAXERRORS=1
)

Auch das weglassen der Option DATAFILETYPE = 'char' brachte keine
Verànderung im Verhalten des BULK Befehls.


=> Hat hier schon einmal jemand vor gleicher Problemstellung gestanden und
kann mir bei der Problemlösung helfen?
Oder kann jemand einen Fehler in meinem Aufruf, dem Dateiformat oder meiner
Intepretation der Online-Artikel erkennen?

Ich bin für jeden Hinweis dankbar.

Gruß
Sebastian
 

Lesen sie die antworten

#1 Christa Kurschat
11/04/2008 - 10:22 | Warnen spam
Hallo Sebastian,

"Sebastian Bauer" <Sebastian schrieb im
Newsbeitrag news:
Hallo Newsgroup,

ich benutzt die BULK INSERT Anweisung, um Daten aus Textdateien in den SQL
Server 2000 zu importieren. Als Trennzeichen verwende ich das "|" (pipe)
Symbol.
Nun gibt es in manchen textbasierten Spalten den Fall, dass das


Trennzeichen
Teil des Feldinhalts ist.
Versuche ich eine Datei mit Trennzeichen im Textbereich zu importieren,


dann
wirft der BULK INSERT einen Fehler.


...

=> Hat hier schon einmal jemand vor gleicher Problemstellung gestanden und
kann mir bei der Problemlösung helfen?



Ja, davor gestanden habe ich schon, hatte aber nicht mit Bulk Insert
gearbeitet
Ich habe damals die Textdatei im Editor geöffnet und alle diese Pipe in "ö"
umgewandelt.

In meinem Fall waren die Daten von Unix und in bestimmten Fàllen wurden aus
den Umlauten Sonderzeichen.

Abhilfe schafft in jedem Fall, wenn Du mit fester Satzlànge und nicht mit
zeichenseparierten Daten arbeitest.

Gruß
Christa

Ähnliche fragen