none
CSV Import schlägt fehl RRS feed

  • Frage

  • Hallo,

    ich möchte ein CSV Datei importieren. Dabei kommt es immer zur Fehlermeldung:

    Meldung 4864, Ebene 16, Status 1, Zeile 62
    Datenkonvertierungsfehler beim Massenladen (Typenkonflikt oder ungültiges Zeichen für die angegebene Codepage) für 1-Zeile, 4-Spalte (BesucheRaus).

    Inhalte der CSV:

    Datum;Stunde;Besuche;Besuche (raus)
    Mi, 20.11.2019;6 Uhr;2;3
    Mi, 20.11.2019;9 Uhr;5;1
    Mi, 20.11.2019;10 Uhr;44;29
    Mi, 20.11.2019;11 Uhr;51;47
    Mi, 20.11.2019;12 Uhr;45;49
    Mi, 20.11.2019;13 Uhr;43;36
    Mi, 20.11.2019;14 Uhr;47;70
    Mi, 20.11.2019;15 Uhr;43;41
    Mi, 20.11.2019;16 Uhr;51;52
    Mi, 20.11.2019;17 Uhr;21;32
    Mi, 20.11.2019;18 Uhr;12;16

    Dazu habe ich folgende Formatdatei erzeugt

    <?xml version="1.0"?>
    <BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <RECORD>
      <FIELD ID="1" xsi:type="CharTerm" TERMINATOR=";" MAX_LENGTH="150" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
      <FIELD ID="2" xsi:type="CharTerm" TERMINATOR=";" MAX_LENGTH="150" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
      <FIELD ID="3" xsi:type="CharTerm" TERMINATOR=";" MAX_LENGTH="150" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
      <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="150" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
     </RECORD>
     <ROW>
      <COLUMN SOURCE="1" NAME="Datum" xsi:type="SQLNCHAR"/>
      <COLUMN SOURCE="2" NAME="Stunde" xsi:type="SQLNCHAR"/>
      <COLUMN SOURCE="3" NAME="Besuche" xsi:type="SQLNCHAR"/>
      <COLUMN SOURCE="4" NAME="BesucheRaus" xsi:type="SQLNCHAR"/>
     </ROW>
    </BCPFORMAT>

    den Aufruf versuche ich wie folgt.

     SELECT a.* FROM
    OPENROWSET (BULK N'\\server\BCH_Stuendlich_Vortag\Besucher_Vortag.txt', FORMATFILE =
        '\\Server\BCH_Stuendlich_Vortag\Besucher_Vortag.fmt'    ) AS a;

    Alternativ habe ich auch schonmal verschiedene Codepages angegeben. Keine half.

    Ein weitere Versuch war:

    BULK INSERT testdb..Besucher_Vortag 
    FROM '\\server\BCH_Stuendlich_Vortag\Besucher_Vortag.txt' 
    WITH (FORMATFILE = '\\server\BCH_Stuendlich_Vortag\Besucher_Vortag.fmt' )

    Was mach ich falsch?

    Vielen Dank für Eure Hilfe

    Gruß Andre

    Donnerstag, 21. November 2019 15:21

Antworten

  • TERMINATOR="\r\n

    … da kommt nur noch der Zeilenumbruch 0A

    Im Format-File hast Du CR+LF definiert, das ist Hex x0D0A, wenn in der Datei am Ende aber nur x0A steht, musst Du TERMINATOR="\n" definieren.

    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    • Als Antwort markiert AndreT78 Freitag, 22. November 2019 09:43
    Donnerstag, 21. November 2019 17:16

Alle Antworten

  • Was passiert, wenn du die Spaltenüberschriften einfach mal weglässt? Oder statt "Besuche (raus)" eben "BesucheRaus" angibst?

    Grüße, Eiko

    Donnerstag, 21. November 2019 15:26
  • Hatte ich auch alles ohne Erfolg ausprobiert.
    Donnerstag, 21. November 2019 15:28
  • Hast du mal mit nem HEX-Editor geschaut, was noch so für Zeichen in der Spalte 4 stehen?
    Donnerstag, 21. November 2019 15:57
  • da kommt nur noch der Zeilenumbruch 0A
    Donnerstag, 21. November 2019 16:03
  • TERMINATOR="\r\n

    … da kommt nur noch der Zeilenumbruch 0A

    Im Format-File hast Du CR+LF definiert, das ist Hex x0D0A, wenn in der Datei am Ende aber nur x0A steht, musst Du TERMINATOR="\n" definieren.

    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    • Als Antwort markiert AndreT78 Freitag, 22. November 2019 09:43
    Donnerstag, 21. November 2019 17:16
  • Vielen vielen Dank ! Das war die Lösung. 
    Freitag, 22. November 2019 09:44