SQL fügt keine Nullwerte mit BULK INSERT ein

8

Ich habe eine CSV-Datei und jede Zeile sieht so aus:

%Vor%

Ich konnte keine Beispiele finden, wie NULL-Werte behandelt werden sollten, wenn ich BULK INSERT tue, also nahm ich an, dass das OK war.

Wenn ich versuche, den BULK INSERT auszuführen, bekomme ich folgenden Fehler:

  

Msg 4864, Ebene 16, Status 1, Zeile 28   Massendatenkonvertierungsfehler (Typkonflikt oder ungültiges Zeichen für die angegebene Codepage) für Zeile 1, Spalte 12 (ClassificationPK).

Hier ist mein Tisch und was nicht:

%Vor%

Irgendwelche Ideen, was ich hier falsch mache?

    
ernest 24.07.2014, 19:38
quelle

2 Antworten

14

Nach:

Ссылка

Nullwerte können eingefügt werden, indem Sie ein leeres Feld in Ihrer Datei haben.

Beispieldatei war:

%Vor%

Beispiel für den Import von Dateien, die Nullen behalten, ist:

%Vor%

Zugegeben, das bedeutet, dass Sie Ihre "NULL" s zu "" ändern müssen, und alle leeren Zeichenfolgen, die Sie als leere Zeichenfolge haben wollten, würden als Nullen interpretiert, aber es könnte ausreichen, um Sie zu starten? Ich würde mir vorstellen, Ihre leeren String-Spalten zu behalten, die sie von

geändert werden müssten %Vor%

bis

%Vor%

als Beispiel

    
Kritner 24.07.2014, 19:53
quelle
1

Ein spätes PS.

Beachten Sie, dass anscheinend ein Fehler vorliegt, wenn die letzte Spalte vom Typ DATETIME ist und der Wert null , dann MÜSSEN Sie ein (normalerweise überflüssiges aber akzeptiertes) Feldtrennzeichen nach dem leeren Feld vor dem Zeilentrennzeichen haben, sonst erhalten Sie einen Fehler.

HINZUFÜGEN: Dies funktioniert nicht immer (manchmal tut es das!?!?), um es stabil zu machen, ändern Sie Ihren ROWterminator, um mit dem FIELDterminator

zu beginnen

z.B. FIELDTERMINATOR = '#', ROWTERMINATOR = '# \ n'

Im Folgenden finden Sie ein Beispiel für den Fehler, den Sie bekommen, wenn es Dinge vermasselt:

  

Massenlade-Datenkonvertierungsfehler (falscher Typ oder ungültiges Zeichen)   für die angegebene Codepage) für Zeile 1, Spalte 31 (MyDateTimeField).

(Und ja, ich habe ein ASCII-Beispiel mit weniger als 7F Zeichen probiert und das gleiche erhalten)

Beispiel:

Die ersten Bulks fallen oft aus. Der andere scheitert nur an der fünften, trotz der Ähnlichkeit mit der zweiten, aber am Ende ist in diesem speziellen Fall nichts erlaubt ...

Testdaten:

%Vor%

und sql

%Vor%     
Eske Rahn 22.06.2017 08:58
quelle

Tags und Links