Frage

Ich versuche, eine Spalte von Daten aus einer Tabelle in Excel 2003 in SQL Server 2005 SSIS zu importieren. Ich bin in Großbritannien so Daten als TT / MM / jjjj möchten.

Leider enthält die Spalte in der Tabelle eine Mischung aus Daten als Zeichenfolge in dd / MM / yyyy (mit Excel ‚Allgemein‘ Formatierung) sowie Termine mit Excel ‚Datum‘ Formatierung dd / MM / yyyy (mit locale gespeichert 'Englisches Vereinigtes Königreich)').

Dies ist nur so, wie es ist, und ich kann der Benutzer in die Lage sein zu sortieren diese selbst nicht erwartet werden.

Wenn in der Tabelle suchen, von Ihnen gewünschten Termin visuell erscheinen korrekt heißt dd / MM / JJJJ.

Ich versuche, die Werte in eine Varchar-Spalte in einer Halt Tabelle in der Datenbank zu importieren. Dann laufe ich eine gespeicherte Prozedur, kopiert diese Werte in die richtige Tabelle, die eine Datetime-Spalte enthält.

Das Problem ist, dass die Daten, die in der Tabelle und die Verwendung Datumsformatierung gespeichert werden als MM / tt / in SQL Server importiert werden und die als Strings gespeicherten Daten werden immer als TT / MM / yyyy importiert. Ich habe IMEX = 1 in der Verbindungszeichenfolge.

Mit Terminen beider Formate in der gleichen varchar Spalte offensichtlich verursacht ein Problem, wenn ich versuche, es in eine Datetime-Spalte zu setzen, damit

SET DATEFORMAT MDY;    
SET DATEFORMAT DMY;

sind nicht von Nutzen.

Weiß jemand, warum das SSIS-Paket auf jeden Fall die scheinbar richtigen Daten in der Excel-Tabelle in SQL Server als MM / tt / importieren würde?

Gibt es trotzdem, das SSIS-Paket zu zwingen, die Daten als TT / MM / yyyy zu importieren, das mit dieser Kombination von Datumsangaben als Zeichenfolge und Zellen mit Datumsformatierung angewandt funktionieren wird?

Jede andere Ideen?!

Vielen Dank,

Anthony

War es hilfreich?

Lösung

Ich glaube, Sie Ihre eigene Frage beantwortet haben. Der Import von Datum formatierten Zellen werden als Termine und andere als String behandelt. Möglicherweise Sie SQL Server Datumseinstellung MM / tt / und damit der Umsatz.

Warum versuchen Sie nicht über einen Datenumwandlungsschritt in Sie SSIS-Paket und konvertieren every in der Spalte in ein einziges Format Zusatz - Datumzeit oder String. Dann bin ich sicher, dass SQL Server alle von ihnen die gleiche Art und Weise handhaben.

Raj

Andere Tipps

Was für mich gearbeitet wurde IMEX=1 in der Excel-Verbindungszeichenfolge hinzuzufügen.

So ist es wie folgt aussehen:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Folder1\Book1.xls;Extended Properties="EXCEL 8.0;HDR=YES;IMEX=1";
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top