none
MERGE ähnlicher Befehl in ORACLE 10g DB Abfrage RRS feed

  • Frage

  • Hallo,

    ich verwende für eine SSIS Abfrage den Attunity Konnektor und habe als SQL Befehl eingetragen:

     

    SELECT  nummer, bez, name, gruppe, bem
    FROM  artikel
    ORDER BY nummer ASC

     

    und schreibe anschließend das Ergebnis in eine Tabelle (per SQL Ziel auf einen MS SQL Server 2008 R2).

     

    Aus Performance Gründen möchte ich nun künftig nur noch die neuen, bzw. veränderten Datensätze in meine SQL Tabelle schreiben. Im Attunity Konnektor funktioniert allerdings der MERGE Befehl nicht.

     

    Meine Frage: Weiss jemand wie der Befehl lautet? Vielen Dank für Eure Hilfe!

     

    Gruß, Jürgen

     

    Dienstag, 16. August 2011 09:12

Antworten

  • Den Connector kenne ich nicht.

    Den merge-Befehl würde ich im SSIS so umsetzten:

    - Einen Lookup-Task hinter die Quelle setzen
    - die Outputs des Lookups entsprechend verteilen:
      - die noch nicht vorhandenen zu einem OleDB-Ziel
      - die vorhandenen zu einem update-Task

    • Als Antwort markiert juergen_ks Mittwoch, 17. August 2011 11:13
    Dienstag, 16. August 2011 12:08
  • Hallo Jürgen,

    1. Verbinde die ORACLE-Datenbank doch über Linked Server

    2. Verwende das MERGE-Konstrukt (ab SQL Server 2008)

    Mehr Informationen zu MERGE
    http://msdn.microsoft.com/de-de/library/bb510625.aspx

     


    Uwe Ricken

    MCITP Database Administrator 2005
    MCITP Database Administrator 2008
    MCITS Microsoft SQL Server 2008, Database Development

    db Berater GmbH
    http://www-db-berater.de
    • Als Antwort markiert juergen_ks Mittwoch, 17. August 2011 11:13
    Mittwoch, 17. August 2011 08:32

Alle Antworten

  • Den Connector kenne ich nicht.

    Den merge-Befehl würde ich im SSIS so umsetzten:

    - Einen Lookup-Task hinter die Quelle setzen
    - die Outputs des Lookups entsprechend verteilen:
      - die noch nicht vorhandenen zu einem OleDB-Ziel
      - die vorhandenen zu einem update-Task

    • Als Antwort markiert juergen_ks Mittwoch, 17. August 2011 11:13
    Dienstag, 16. August 2011 12:08
  • Danke für den Vorschlag, den ich jetzt auch umsetzen werde. Allerdings habe ich mir überlegt, die Quelledaten aus der ORACLE Tabelle zunächst in eine temporäre Tabelle einzulesen, dann die MERGE Prozedur auszuführen. Oder gibt's noch eine elegantere Lösung?

     

    Mittwoch, 17. August 2011 08:25
  • Hallo Jürgen,

    1. Verbinde die ORACLE-Datenbank doch über Linked Server

    2. Verwende das MERGE-Konstrukt (ab SQL Server 2008)

    Mehr Informationen zu MERGE
    http://msdn.microsoft.com/de-de/library/bb510625.aspx

     


    Uwe Ricken

    MCITP Database Administrator 2005
    MCITP Database Administrator 2008
    MCITS Microsoft SQL Server 2008, Database Development

    db Berater GmbH
    http://www-db-berater.de
    • Als Antwort markiert juergen_ks Mittwoch, 17. August 2011 11:13
    Mittwoch, 17. August 2011 08:32
  • Hallo,

     

    besten Dank für die Lösungsvorschläge - ich bin schon dabei den von Uwe beschriebenen LINKED SERVER einzurichten.

     

    Gruß, Jürgen

    Mittwoch, 17. August 2011 11:16