Ich habe hier ein SSIS-Paket gebastelt, welches mir bestimmte Felder aus einer SQL-Server 2005 Datenbank ausliest und in eine neue SQL-Server 2008 R2 Datenbank einliest. Einige Zeilen werden dann anschließend aufgrund verschiedener Kriterien wieder gelöscht und nachdem die komplette Tabelle dann nur noch die Datensätze enthält, die benötigt werden, wird die Tabelle dann als txt-File ausgegeben um sie einem Programm zur Verfügung zu stellen. Allerdings habe ich das Problem, dass das Datum von 3 Spalten im Format YYYY-MM-DD in das TXT-File geschrieben wird, das Programm dieses Format aber nicht verarbeiten kann. Ich möchte die Daten daher entsprechend in das Format DD-MM-YYYY konvertieren, bekomme dies aber nicht hin. Ich habe die Daten auch schon mit SELECT CONVERT(char(10), Spaltenname, 104) as Spaltenname FROM tabelle ausgelesen. Im Management Studio wird das richtige Datum ausgegeben, im SSIS-Paket wird es trotzdem als YYYY-MM-DD in das TXT-File geschrieben.
Hallo Maverick, du kannst das Datum aus der Datenbank mit Hilfe von Data Conversion in einen String umwandeln und dann mit Hilfe von Derived Column und Substring die einzelnen Bausteine des Datums in umgekehrter Reihenfolge wieder zusammensetzen:
SQL Source -> Data Conversion (DT_date to DT_str) -> Derived Column (SUBSTRING(datum_str,9,2) + "-" + SUBSTRING(datum_str,6,2) + "-" + SUBSTRING(datum_str,1,4) -> SQL Destination oder Flat-File-Destination
Ich habe es ausprobiert und hoffe, dass es dein Problem löst.
Ich glaub soweit war er schon. Zitat: "Ich habe die Daten auch schon mit SELECT CONVERT(char(10), Spaltenname, 104) as Spaltenname FROM tabelle ausgelesen. Im Management Studio wird das richtige Datum ausgegeben, im SSIS-Paket wird es trotzdem als YYYY-MM-DD in das TXT-File geschrieben."
Ich denke das Problem liegt eher beim schreiben der Datei als beim lesen - Ist aber wirklich nur geraten.
PS: Um von oben nach unten zu selektieren musst du shift+alt gedrückt halten. Dann einfach die Cursor benutzen. Der rest ist Strg+C/V
*Edit*
Kannst ansonsten auch Suchen und Ersetzen nehmen in Notepad++ und dann Regexp. einschalten Suchen: ([0-9]++++)-([0-9]++)-([0-9]++) Ersetzen: \3.\2.\1
PS: Leider kennt notepad++ den lazy operator nicht, daher ein paar + PPS: Natürlich alles nur unter der Voraussetzung das du die Datei nur einmal anpacken musst
Danke, das hat geholfen, nachdem ich es entsprechend angepasst habe: OLE DB Quelle -> Datenkonvertierung(DT_datetime to DT_date) -> Datenkonvertierung(DT_date to DT_str) -> Abgeleitete Spalten ->(SUBSTRING(datum_str,9,2) + "." + SUBSTRING(datum_str,6,2) + "." + SUBSTRING(datum_str,1,4) -> Flatfileziel
Ich denke das Problem liegt eher beim schreiben der Datei als beim lesen - Ist aber wirklich nur geraten.