none
Probleme mit DateTime von Oracle zu SQLSERVER mit sqlBulkCopy RRS feed

  • Frage

  • Hallo,

     

    ich habe ein kleines Problem mit sqlBulkCopy und dem kopieren von Daten aus einer Oracle-DB in eine SQLSERVER-DB.

     

    Beim Versuch des Schreibens in die SQLSERVER-DB erhalte ich folgende Fehlermledung.

    "Der angegebene Wert vom Typ Decimal aus der Datenquelle kann nicht in Typ datetime der angegebenen Zielspalte konvertiert werden."
    

    Der Datentyp auf Oracle-Seite ist TimeStamp(3), auf der SQLSERVER-Seite ist der Datentyp DateTime. wie kann ich den Datentyp sicher schon bei der Abfrage convertieren?

     

    Danke Rico

     

    Freitag, 14. Januar 2011 14:51

Antworten

  • Hallo Alle,

     

     

    danke für Eure Hilfe....

    Das Problem lag einer anderen Stelle. Das Problem war, dass es als erste Spalte eine Auto-ID Spalte gab, die mit dem Datum hätte gefüllt werden sollen, und für das Datum wurde die nächste Spalte, welche nun DECIMAL war, verwendet, wo eine Konvertierung nicht möglich war.

    Mit dem Verschieben der Auto-ID Spalte an das Ende der Tabelle ist das Problem gelöst.

     

    Gruß Rico

    • Als Antwort markiert Rico Fiedler Montag, 7. Februar 2011 08:23
    Montag, 7. Februar 2011 08:23

Alle Antworten

  • hallo Rico,

    Der Datentyp auf Oracle-Seite ist TimeStamp(3), auf der SQLSERVER-Seite ist der Datentyp DateTime. wie kann ich den Datentyp sicher schon bei der Abfrage convertieren?

    In dem du ihn Oracle-seitig in ein Textformat umwandelst, welches der SQL Server versteht:

    http://msdn.microsoft.com/en-us/library/ms187819.aspx

    Ich nehme bevorzugt immer das ODBC-Format.


    Microsoft MVP Office Access
    https://mvp.support.microsoft.com/profile/Stefan.Hoffmann
    Freitag, 14. Januar 2011 15:27
    Moderator
  •  

    Hallo,

     

    danke für die Antwort. Den oben beschriebenen Weg habe ich schon getestet, allerdings habe ich das "passende" Format für den sqlBulkCopy zu finden. folgendes habe ich schon erfolglos probiert:

     

    TO_CHAR(START_TIME, 'MM-DD-YYYY HH24:MI:SS.FF')
    
    TO_CHAR(START_TIME, 'MM/DD/YYYY HH24:MI:SS.FF')
    
    TO_CHAR(START_TIME, 'DD-MM-YYYY HH24:MI:SS.FF')
    
    TO_CHAR(START_TIME, 'DD.MM.YYYY HH24:MI:SS.FF')
    
    TO_CHAR(START_TIME, 'DD_MM_YYYY HH24:MI:SS.FF')
    

    Gibt es bei sqlBulkCopy noch irgendwelche Sachen zu beachten?

     

    Gruß Rico

     

     

     

     

    Montag, 24. Januar 2011 17:10
  • hallo Rico,

    Das Ergebnis sollte in der CSV-Datei so aussehen:

    { ts '1998-05-02 01:23:56.123' }

    also sollte es mit

     TO_CHAR(START_TIME, '{ ts ''YYYY-MM-DD HH24:MI:SS''}')

    funktionieren.


    Microsoft MVP Office Access
    https://mvp.support.microsoft.com/profile/Stefan.Hoffmann
    Dienstag, 25. Januar 2011 09:31
    Moderator
  • Hallo Alle,

     

     

    danke für Eure Hilfe....

    Das Problem lag einer anderen Stelle. Das Problem war, dass es als erste Spalte eine Auto-ID Spalte gab, die mit dem Datum hätte gefüllt werden sollen, und für das Datum wurde die nächste Spalte, welche nun DECIMAL war, verwendet, wo eine Konvertierung nicht möglich war.

    Mit dem Verschieben der Auto-ID Spalte an das Ende der Tabelle ist das Problem gelöst.

     

    Gruß Rico

    • Als Antwort markiert Rico Fiedler Montag, 7. Februar 2011 08:23
    Montag, 7. Februar 2011 08:23