Forma File am Verzweifeln

drbishop

Neuer Benutzer
Beiträge
3
Hallo Miteinander,

ich möchte meinen Datenimport automatisieren.
Im Einsatz habe ich MS SQL Express und möchte über bulk insert ein csv importieren.
Leider scheitere ich an der Konvertierung der Datenfelder.

Mein Formatfile als xml schaut wie folgt aus:

Code:
<?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="30"/>
      <FIELD ID="2" xsi:type="CharTerm" TERMINATOR=";" COLLATION="Latin1_General_CI_AS"/>
      <FIELD ID="3" xsi:type="CharTerm" TERMINATOR=";" COLLATION="Latin1_General_CI_AS"/>
      <FIELD ID="4" xsi:type="CharTerm" TERMINATOR=";" MAX_LENGTH="30"/>
      <FIELD ID="5" xsi:type="CharTerm" TERMINATOR=";" COLLATION="Latin1_General_CI_AS"/>
      <FIELD ID="6" xsi:type="CharTerm" TERMINATOR=";" COLLATION="Latin1_General_CI_AS"/>
      <FIELD ID="7" xsi:type="CharTerm" TERMINATOR=";" COLLATION="Latin1_General_CI_AS"/>
      <FIELD ID="8" xsi:type="CharTerm" TERMINATOR=";" COLLATION="Latin1_General_CI_AS"/>
      <FIELD ID="9" xsi:type="CharTerm" TERMINATOR=";" COLLATION="Latin1_General_CI_AS"/>
      <FIELD ID="10" xsi:type="CharTerm" TERMINATOR=";" COLLATION="Latin1_General_CI_AS"/>
      <FIELD ID="11" xsi:type="CharTerm" TERMINATOR=";" COLLATION="Latin1_General_CI_AS"/>
      <FIELD ID="12" xsi:type="CharTerm" TERMINATOR=";" COLLATION="Latin1_General_CI_AS"/>
      <FIELD ID="13" xsi:type="CharTerm" TERMINATOR=";" MAX_LENGTH="5"/>
      <FIELD ID="14" xsi:type="CharTerm" TERMINATOR=";" MAX_LENGTH="5"/>
      <FIELD ID="15" xsi:type="CharTerm" TERMINATOR="\n" MAX_LENGTH="5"/>
     </RECORD>
     <ROW>
      <COLUMN SOURCE="1" NAME="Konto" xsi:type="SQLFLT8"/>
      <COLUMN SOURCE="2" NAME="Beleg" xsi:type="SQLDATE"/>
      <COLUMN SOURCE="3" NAME="BU" xsi:type="SQLNVARCHAR"/>
      <COLUMN SOURCE="4" NAME="Gegenkonto" xsi:type="SQLFLT8"/>
        <COLUMN SOURCE="5" NAME="Steuersatz" xsi:type="SQLNVARCHAR"/>
        <COLUMN SOURCE="6" NAME="KOST1" xsi:type="SQLNVARCHAR"/>
      <COLUMN SOURCE="7" NAME="KOST2" xsi:type="SQLNVARCHAR"/>
      <COLUMN SOURCE="8" NAME="Beleg1" xsi:type="SQLNVARCHAR"/>
      <COLUMN SOURCE="9" NAME="Beleg2" xsi:type="SQLNVARCHAR"/>
        <COLUMN SOURCE="10" NAME="Soll" xsi:type="SQLFLT8"/>
      <COLUMN SOURCE="11" NAME="Haben" xsi:type="SQLFLT8"/>
      <COLUMN SOURCE="12" NAME="Stapel" xsi:type="SQLNVARCHAR"/>
      <COLUMN SOURCE="13" NAME="Mandant" xsi:type="SQLFLT8"/>
        <COLUMN SOURCE="14" NAME="Jahr" xsi:type="SQLFLT8"/>
      <COLUMN SOURCE="15" NAME="Monat" xsi:type="SQLFLT8"/>
     

</ROW>
</BCPFORMAT>

Die Feldtypen im Source entsprechen den der Tabelle, die Codepage der Tabelle ist Latin1_General_CI_AS

CSV Trennzeichen ist ";"

Mein Bulk insert schaut wie folgt aus:

Code:
DELETE FROM [Datenbank].[src].[Tabelle]
GO
BULK INSERT [Datenbank].[src].[Tabelle]
FROM 'C:\Pfad...'
WITH
(
FORMATFILE = 'C:\Pfad...',
FIRSTROW = 2
)
GO
....

Ich bekomme aber immer folgenden Fehler für die Spalten Soll und Haben
Meldung 4864, Ebene 16, Status 1, Zeile 3
Datenkonvertierungsfehler beim Massenladen (Typenkonflikt oder ungültiges Zeichen für die angegebene Codepage) für 2-Zeile, 10-Spalte (Soll)......

Ich habe keine Ahnung was ich noch machen soll - hat jemand eine Idee?
Verwende ich nur den Feldtyp NVARCHAR gibt es keine Probleme und es funktioniert.

Würde mich sehr über einen Tip freuen. Vielen Dank und viele Grüße
 
Werbung:
Erst einmal: ist es das? Ich kenne Deine Daten nicht. Ich kenne auch das ganze M$SQL-Krams nicht. In PG könnte man es z.B. erst einmal in eine Zwischentabelle laden und da bearbeiten oder aber im COPY FROM durch ein Programm (awk, sed, perl, $whatever) pipen und da korrigieren.
 
Werbung:
Zurück
Oben