| 

.NET C# Java Javascript Exception

3
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.
09.11.2011
Maverick 53 2
5 Antworten
2
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.

Gruß, Ingo
10.11.2011
ingohoefker 36 1
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.
Nicolai Schönberg 10.11.2011
0
Vll kein zauberhafter Lösungsweg über SQL, aber prakmatisch:

Installier dir Notepad++, mach die Textdatei auf und... ach warte ich mach kurz ein Video :-)

Hier:
http://www.youtube.com/watch?v=4Wd5oJ-Z8Ps

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

Gruß
09.11.2011
Nicolai Schönberg 2,3k 1 8
0
Danke für den Tipp, aber die Datei soll jeden Tag neu erstellt werden. Von daher bräuchte ich etwas, was sich in das SSIS-Paket mit einbinden lässt.
10.11.2011
Maverick 53 2
Ok das wusste ich natürlich nicht, dann vergiss es ;-)
Nicolai Schönberg 10.11.2011
0
Hallo Nicolai, ich habe es ausprobiert und es klappt einwandfrei.
10.11.2011
ingohoefker 36 1
0
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
10.11.2011
Maverick 53 2

Stelle deine Sql-Frage jetzt!