Jump to content

SQL Server nvarchar zu decimal


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

habe folgendes Problem,

Ich bekomme von extern immer wieder Textdateien geliefert.

Die lese ich zur besseren Verarbeitung per DTS in eine SQL Tabelle ein.

Da die Textdatei ja rein sichtlich gesehen nut text enthält legt der SQL Server eine Tabelle an in der nur nvarchar (255) Felder enthalten sind.

Ich möchte nun nach dem Import der Daten ein Update SQL-Script laufen lassen das 2 Felder von nvarchar (255) auf decimal ändert.

Leider sagt SQL Server immer das er nicht von text auf numeric konvertieren kann.

Hat jemand ne Idee wie ich das bewältigen kann?

 

Gruss

 

brainstocker

Link zu diesem Kommentar

n'Abend!

 

Ich gehe davon aus, dass Du den Masseneinfügetask für den Import verwendest. Für diesen kannst Du eine Formatdatei generieren. Das geht über den Button "Generieren" im Dialog Eigenschaften vom Task oder auch mit dem Befehl "bcp". In der Formatdatei kannst Du dann die Feldtypen definieren.

 

Würde Dir aber für die Zukunft empfehlen direkt mit dem "bcp" zu arbeiten.

 

Hoffe ich konnte helfen.

 

Gruss

Sascha

Link zu diesem Kommentar
Original geschrieben von Sascha1971

n'Abend!

 

Ich gehe davon aus, dass Du den Masseneinfügetask für den Import verwendest. Für diesen kannst Du eine Formatdatei generieren. Das geht über den Button "Generieren" im Dialog Eigenschaften vom Task oder auch mit dem Befehl "bcp". In der Formatdatei kannst Du dann die Feldtypen definieren.

 

Würde Dir aber für die Zukunft empfehlen direkt mit dem "bcp" zu arbeiten.

 

Hoffe ich konnte helfen.

 

Gruss

Sascha

 

Bahnhof !!???

 

Sorry aber ich finds nicht

bcp schau ich mir an ...

 

Gruss

 

brainstocker

Link zu diesem Kommentar
Original geschrieben von Sascha1971

Moin!

 

Dann ganz von vorn. Wie importierst Du die Daten (Textdatei) mit DTS? Mit dem Assistenten für Import/Export?

 

Gruss

Sascha

 

Hallo,

 

ja mit DTS. Nein ohne den Assistenen.

Habe erst mal einen SQL Befehl lauen der meine Tablelle löscht.

 

Danach hab ich einen Text File (Source) in dem ich nur festlegen kann wie die Trennzeichen aussehen und ob ich ein OEM oder ANSI Format importierne will. (Einstellungen = Dateityp(OEM), Textqualifizierer(~), Erste Spalte enthält Spaltennamen(Ja), Spaltentrennzeichen(|))

 

Dann hab ich mir eine Verbindung zu meiner SQL Datenbank angelegt.

 

Das kopieren läuft wiederum über einen Task in dem ich zwar eine bestehende Tabelle auswählen kann (hier erscheint auch der Importfehler) aber ich will ja in eine neue Tabelle importieren und dann die Feldtypen ändern, also lasse ich die Tabelle anlegen.

Über erstellen -> kann ich zwar beim SQL Script zur Erstellung der Tabelle die Feldtypen festlegen - > aber dann laufe ich wieder auf den gleichen Fehler da ja die Tabelle zuerst angelegt wird und dann die Daten importiert werden.

 

Hoffe das reicht als Info ?

 

Gruss

 

brainstocker

Link zu diesem Kommentar

Bin eben nochmal so ein Szenario durchgegangen. Denke im Moment ist es für Dich am Einfachsten einfach den "DTS-Import-Assistenten" zu verwenden. Das klickt sich ganz gut... :D

 

Wichtig für Dich:

 

Im Schritt "Quelltabellen und Sichten auswählen" in der Spalte "Transformieren" den Button drücken. Da kommt dann der Dialog "Spaltenzuordnungen und Transformationen". Dort kannst Du dann die Zieltabelle neu erstellen lassen und den Spaltentyp zuordnen und Spaltennamen anpassen.

 

Im nächsten Schritt kannst Du dann das Paket speichern.

 

Und schon hast Du ein DTS Paket und alle Felder werden entsprechend zugewiesen mit Ihrem gewünschten Typ.

 

Hoffe das hilft bei Dir!

 

Gruss

Sascha

Link zu diesem Kommentar
Original geschrieben von Sascha1971

Bin eben nochmal so ein Szenario durchgegangen. Denke im Moment ist es für Dich am Einfachsten einfach den "DTS-Import-Assistenten" zu verwenden. Das klickt sich ganz gut... :D

 

Wichtig für Dich:

 

Im Schritt "Quelltabellen und Sichten auswählen" in der Spalte "Transformieren" den Button drücken. Da kommt dann der Dialog "Spaltenzuordnungen und Transformationen". Dort kannst Du dann die Zieltabelle neu erstellen lassen und den Spaltentyp zuordnen und Spaltennamen anpassen.

 

Im nächsten Schritt kannst Du dann das Paket speichern.

 

Und schon hast Du ein DTS Paket und alle Felder werden entsprechend zugewiesen mit Ihrem gewünschten Typ.

 

Hoffe das hilft bei Dir!

 

Gruss

Sascha

 

Genau so hatte ich es auch schon gemacht.

Das Problem ist nur das ich zwar den Datentyp und Namen setzen kann, aber der Import bringt dann trotzdem den Fehler.

Letztenendlich lege ich mit der Transformation -> Neu erstellen ja VORHER eine Tabelle an und importieren dann in diese mit den neuen Feldtypen. Aber ! irgendwie erkennt SQL Server da nur text.

Als decimal trennzeichen im Textfile wird "," verwendet.

Hab die Daten überprüft und keine Fehler gefunden.

 

Gruss

 

brainstocker

Link zu diesem Kommentar

Hallo,

 

LÖSUNG gefunden!!!

 

Hab mich grad selber drauf gebracht,

 

Ist eigentlich nur ein mini Problem aber damit gehts.

 

Hab ja vorhin gesagt in dem Textfile ist ein Komma als decimal Trennzeichen.

SQL Server will aber kein Komma sondern einen punkt beim import von decimal.

MySQL nimmt auch Komma deshalb gehts.

Hab mich mal grade mit den Daten hypnotisiert und dann den Fehler gesehen (Newbie Fehler eigentlich SORRY)

jetzt muss ich mir was einfallen lassen wie ich die decimal Felder vor dem Import im DTS Paket konvertiere.

Einer Ideen ?

 

Mit BizTalk wüßt ichs aber das soll lt vorgabe meines Chefs nicht über BizTalk laufen.

 

Gruss

 

brainstocker

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...