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:
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:
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
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