2009-05-26 2 views
0

Ich mache einen Import und konvertiere Spalten in andere Datentypen. Während des Imports überprüfe ich, ob ich die in den Spalten gespeicherten Werte in die Zieldatentypen konvertieren kann. Wenn nicht, setze ich einen Standardwert, z. Ich konvertiere einen String in int und wenn ich den String nicht konvertieren kann, gebe ich -1 ein.T-SQL: Wie man fehlerhafte Einträge während des Imports protokolliert

In diesem Moment wäre es toll, wenn ich die fehlerhaften Einträge in eine separate Tabelle, z. anstelle einer syntaktischen Zeichenfolge '1234' 'xze' kommt an, also setze ich -1 in die Zieltabelle und 'xze' in die Log-Tabelle. Ist das mit (T-) SQL möglich?

Cheers,

Andreas

+0

Wie viele Zeilen reden wir? Dutzende oder 1000 in jedem Import? – gbn

Antwort

2

Dies ist auch sehr einfach mit SSIS Datenfluss Aufgaben zu tun. Jeder der Datenumwandlungs- oder Nachschlage-Schritte, die Sie versuchen könnten, wird als "Erfolg" ausgegeben und als "Fehler" ausgegeben. Sie leiten einfach alle Fehlerausgaben zu einer "Union" -Transformation und von dort in eine allgemeine Fehlertabelle. Das Ergebnis aller Erfolge geht in Ihre "Erfolgstabelle". Sie können sogar zusätzliche Details in die Fehlertabelle einfügen, um klare Fehlermeldungen zu erhalten.

Das Schöne daran ist, dass Sie immer noch hohe Leistung erhalten, da sich ganze Puffer durch das System bewegen. Sie werden schließlich Puffer voll gültiger Daten haben, die in die Erfolgstabelle geschrieben werden, und kleine Puffer voller Fehler werden in die Fehlertabelle geschrieben. Wenn Fehler in einer Zeile auftreten, wird diese Zeile einfach von einem Zeilenpuffer in einen anderen verschoben.

+0

ja. Wenn die Person SQL Server 2000 jedoch verwendet, ist das viel schwieriger. – HLGEM

+0

Der Beitrag ist mit "sqlserver2005" getaggt. –

0

Wenn Sie eine Staging-Tabelle haben, können Sie die guten Sachen in den Final Table filtern und ein (NICHT VORHANDEN) trete zurück, um den Müll für die Log-Tabelle zu finden