Zum Inhalt springen

Oracle / MS-SQL - Daten aktualisieren


Enno

Empfohlene Beiträge

Hallo Jungs und Mädels,

also ich habe eine Oracle Datenbank und eine MS-SQl Datenbank, zwischen denen ich eine Aktualisierung hibekommen muss.

Ich habe mir die Möglichkeit Access mal angekuckt, komme aber nicht weiter.

In beiden Datenbanken gibt es eine Tabelle mit mindestens den Feldern:

Barcode

Belegnummer

Vorgangsnummer

Kundenname

Kundennummer

Datum

in beiden Dabas sind die Barcodes identisch (ok nicht immer. Es gibt doppelte Datensätze, oder Datensätze wo kein Barcode existiert.)

Nun muss auf Knopfdruck, doer vollautomatisch (egal)

in Tabelle a (MS-SQL-Server) Die Felder:

Belegnummer

Vorgangsnummer

Kundenname

Kundennummer

Datum

mit den Daten aus Daba b gefüllt werden.

Also wenn in Daba a der Barcode 00001 existiert und die anderen Felder leer sind, dann soll er aus Daba b die zu dem Barcode entsprechenden Felder holen und eintragen.

Wie kann ich das am besten machen.

Vonmir aus auch nen Macro in Access oder sowas. Ist kein Thema, das ich mir beide Tabellen als externe Daten verknüpfe und das so aktualisiere. Es gibt zwar nen Toll vom Softwarehersteller, das ist aber zu unzuverlässig. Mal tuts, mal machts nur nen Teil der Daten, mal sogar alle. Und jedesmal muss man nachkontrollieren.

Danke für sachdienliche Hinweise.

Gruß

Enno

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi!

Ich weiß nicht welche Bordmittel Oracle noch bietet. Du kannst de Daten zumindest vom SQL-Server aus "ziehen". Meine Empfehlung wäre dafür DTS zu nutzen. Dort bindest du die Oracle-Seite via ODBC-Treiber einfach als Datenquelle ein. Dieses Paket kannst du dann beliebig per Job schedulen.

Eine andere Möglichkeit wäre den Oracle-Server aus T-SQL mit einer Funktion oder Prozedur aufzurufen. Dies kannst du über einen Linked-Server, dessen Verbindung ständig besteht oder temporär mit OPENROWSET. Näheres beschreibt Microsoft in der MSDN hier

Gruß,

Honky

Link zu diesem Kommentar
Auf anderen Seiten teilen

Kann mir einer dann bei dem VB dazu helfen?

WENN

DTSDestination("BELEGNR") = DTSSource("Col005")

DANN update

DTSDestination("DATUM") = DTSSource("Col002")

DTSDestination("LIEFERANTENNR") = DTSSource("Col003")

DTSDestination("VORGANGSNR") = DTSSource("Col001")

DTSDestination("BARCODE") = DTSSource("Col007")

DTSDestination("REFERENZ") = DTSSource("Col006")

Main = DTSTransformStat_OK

ANSONSTEN tue nix!

Danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gibt es in der Oracle-Quelle denn eine Spalte die kenntlich macht ob sich ein Datensatz verändert hat?

Nein. Er soll immer dann die Daten eintragen, wenn die anderen Felder leer sind. ändern tut sich da nichts. das ist sichergestellt. Ist also nur sone Art Abgleich zwischen den beiden Tabellen.

Und mit dem "Transform Data Task"

ich steh voll auf dem Schlauch. Was meinst du?

Alle Tasks -> Daten importieren

-> Oracle als Source auswählen -> SQL als Ziel auswählen

-> Dann Transformieren?

und nu weiter.

Hier kann ich nur sagen, das er alle in a enthaltenen Zeilen in b einfügen soll. Und irgendwas mit IDENTITY_INSERT

nur ich blick nicht wie es funktioniert, das er nur die zeieln updaten soll, die schon in b enthalten sind, und bestimmte bedingungen erfüllen.

Also Barcode vorhanden, und 3 andere Felder leer.

Und dann bitte nur die Felder updaten, keinen neuen Datensatz einfügen, oder solche Spiele.

Irgendwie bin ich heute grade echt der NULL Checker.

Danke für die Hilfe.

Gruß

Enno

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nein, ich meinte auch nicht den DTS Import/Export-Wizard.

Direkt unter dem Baum-Punkt "Datenbanken" im Enterprise Manager findest du "Data Transformation Services". Dort gelangst du über rechte Maustaste -> "Neues Paket erstellen" in den DTS-Designer. Dort wiederum hast du dann verschiedene Objekte, die du ins Paket integrieren kannst. Wahrscheinlich brauchst du 2 Verbindungen und 1 Transformation Task.

Ich schau mal ob ich noch nen Link dazu finde.

[Edit]

http://www.sqldts.com/

[/Edit]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das ist doch dann das gleiche, als wenn ich mit dem Wizard das Paket erstelle, und dann hinterher anschaue.

Ich kann doch dann mit nem doppelklick auf die Verbindung von Quelle zu Ziel auch wieder alles ändern.

Mehr möglichkeiten habe ich doch auch nciht wenn ich das direkt erstelle.

Oder übersehe ich grade was.

Und mit dem erstellen der eigenschaften dieser verbindung komme ich eben nicht weiter.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das ist doch dann das gleiche, als wenn ich mit dem Wizard das Paket erstelle, und dann hinterher anschaue.

Ich kann doch dann mit nem doppelklick auf die Verbindung von Quelle zu Ziel auch wieder alles ändern.

Mehr möglichkeiten habe ich doch auch nciht wenn ich das direkt erstelle.

Oder übersehe ich grade was.

Und mit dem erstellen der eigenschaften dieser verbindung komme ich eben nicht weiter.

Klar hat man dort mehr Möglichkeiten. Du kannst zum Beispiele mehrere Schritte planen/parallelisieren, hast Fehlerhandling etc..

Wie genau gehst du denn jetzt vor? bzw. Welche Fehlermeldung erhältst du denn?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habs mal so versucht wie du geschrieben hast.

Also Im Enterprise Manager -> DTS -> neues Paket

Quelle und Ziel ausgewählt

und dann hab ich schon das Problem mit den Transformationen.

Jetzt will er von mir für jede Verbindung von QuellSpalte zu Zielspalte ne eigene Transformation haben.

Will ich ja nicht. Er soll ja einfach kopieren, ABER eben nur, wenn die Bedingung mit dem Barcode erfüllt ist.

Kannst du mir nicht son DTS paket zusammenbasteln. Nur damit ich sehe wies funktioniert, und mir dann mailen.

Die kann man doch exportieren.

Dann kann ichs mir mal ankucken, wie die Bedingung da eingefügt wird.

Danke

Gruß

Enno

P.S. mailaddy folgt per PN

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Honkytonk,

ich habe mir jetzt mal kurzfristig anderweitig beholfen.

Ich habe beide Tabellen in Access verknüpft und ne Aktualisierungsabfrage erstellt.

Funktioniert erstmal.

Chefe wollte es dringend haben.

Wäre trotzdem nett wenn wir mit dem DTS Paket auf nen grünen Zweig kommen.

Dann kann ich es komplett automatisieren.

Immerhin dauert die aktualiesierungsabfrage auch noch ca. 30 Minuten. Sind ja nur 2,5 Millionen Datensätze ind er zu aktualisierenden Tabelle. Und die mit den Werten die eingetragen werden sollen, hat auch immerhin ca. 500.000 Datensätze.

Danke und Gruß

Enno

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

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

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

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

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...