Kopieren von einer Datenbank A Tabelle B in Datenbank C Tabelle D Wie geht das?

Kissling

Benutzer
Beiträge
15
Hallo Zusammen,

leider verzweifle ich an volgender Aufgabe:
Kopieren von einer Datenbank A in Datenbank B nur gleiche Felder.
Ungleiche Felder müssen passend zugeordnet werden.
Ich habe ne menge gegoogelt und tutorials angeschaut, aber alle behandeln höchstens das kopieren in einer Datenbank :-(

Ok, ich bin wirklich kein SQL-Spezialist, aber was eine SQL-Management-Studio und eine Abfrage ist mir bekannt.
Kann mir bitte jemand beim Ertsellen folgender Abfrage helfen:

Ich muss aus der Datenbank "EBERLE-FM6-Import" die Daten aus der Tabelle "ANGEBOTP"
in die Datenbank "cRM_Solution_cosmolink_faktura_ES" in die Tabelle "Factura_Beleg_Positionen" kopieren.

Leider sind die Tabellenfelder nicht komplett gleich :)

Kann mir bitte jemand bei der Erstellung einer SQL-Anweisung helfen, mit der ich die Daten aus
Datenbank "EBERLE-FM6-Import" Tabelle



Ich habe mir Listen der Felder erstellt:

--- Felder der Quelldatenbank "EBERLE-FM6-Import" Tabelle "ANGEBOTP":
BELEGNR
POSTYP
POSNR
POSNR2
POSNR3
ANZAHL
MASS
ARTIKELNR
BEZEICHN1
STKPREIS
RABATT
UST_SATZ
BEZEICHN2
PREIS_EK
GEWICHT
GEWICHT_E
LAGERFAKT
FLAG_01
FLAG_02
FLAG_03
FLAG_04
FLAG_05
FLAG_06
FLAG_07
FLAG_08
FLAG_09
FLAG_10
SN_LISTE
MASTERPOS
SPLIT_ANZ
---

--- Felder der Zieldatenbank "cRM_Solution_cosmolink_faktura_ES" Tabelle "Factura_Beleg_Positionen"
Artikelnr
Menge
Erf_User
Erf_Dat
Aend_Dat
Aend_User
Recordid
Artikel_Recordid
Beleg_Recordid
Pos_Typ
Pos_Nr
Pos_Nr2
Masseinheit_RecordID
Bezeichn1
Stk_Preis
Rabatt
Ust_Satz
Bezeichn2
Preis_Ek
Flag_01
Flag_02
Pos_Typ_Icon
Pos_Preis_Gesamt
VkPreis
Vorgangnr
GroupID_Stueckliste
Basispreis
Stueckliste_Ausblenden
Artikeldetails_Ausblenden
Beleg_Fertig
Abgeschlossen
Teillieferung
Erloes_Kto_Nr
Geloescht
Lagerbuchung
Artikel_Garantie
Artikel_Gewaehrleistung
Artikelnr_Lieferant
Stk_Preis_Ink
Pos_Preis_Gesamt_Ink
Lieferant_Recordid
Sn_Liste
KoSt1
KoSt2
KoStMenge
Kalkulationsfaktor
Mass
BelegNR
BelegNR2
------

Viele der Felder sind gleich, aber nicht alle!
Die Felder die nicht gleich sind müssen also neu zugeordnet werden!

Vielen herzlichen Dank.
Ronald
 
Werbung:
Die Felder die nicht gleich sind müssen also neu zugeordnet werden!
Ist das ernst gemeint?

Was sagt denn ein Feldname über dessen Inhalt aus?
Und woher soll hier jemand etwas dazu sagen können, der weder die beteiligten Programme noch die faktischen Dateninhalte kennt?

Meinst Du nicht, es ist besser, sich damit an den Hersteller zu wenden? (Ich gehe mal davon aus, Du arbeitest nicht selbst beim Hersteller)
 
Hallo,
ja, war schon ernst gemeint!
Die Inhalte der Datenbankfelder sind ja passend!
Man muss doch sowas wie:
Kopiere Feld B in Feld C machen können.

Gruß Kissling
 
Ja, klar
Man muss doch sowas wie:
Kopiere Feld B in Feld C machen können.
insert into tabelleZ (SpalteA, SpalteF, SpalteG, .. SpalteM, SpalteN, ..SpalteY)
select from tabelleQ(SpalteB, SpalteG, SpalteF, .. SpalteM, SpalteN, ..SpalteY);

Ich wüsste nur nicht, wie Dir jemand sagen soll, welches Feld wo hin gehört. Darum ging es mir.
 
Hallo dabadepdu,

Was in den Feldern seht weis ich natürlich.
Frage:
Muss bei insert tabelleZ und tabelleQ nicht auch die Datenbank angegeben werden?

Ronald
 
Ja, meine Antwort bezog sich auf die Frage der Feldzuordnung.
Die DB wird abhängig von Hersteller, Version und Server angegeben.

Im Idealfall liegt Quell DB und Ziel DB auf einem Server, dann z.B. so:
Code:
insert into [db1name].[dbo].[tabelleZ] (Id, Feld1, ...)
select Id, Feld3, ...
from [db2name].[dbo].[tabelleQ]
where <Deine Suchkriterien
Wenn es anders ist, wird es umständlicher, jenachdem ob die Server sich "sehen" können und Hersteller abhängig.
Für das Beispiel und andere Varianten ist es natürlich notwendig, dass der ausführende User das Recht hat, die eine DB Tabelle zu befüllen und die andere zu lesen.
 
Hallo dabadepdu.

Super. Danke.
Mal eine klare Erklärung.
Zur Ergänzung:
Ich benutze MS SQL 17.x
Passend MS-SQL-MAnager 17.x
Alles auf einem Server (VM-Ware Maschine) wegen abkapselung zum Produktivsystem)

Ich hab aber noch 2 Verständnis-Fragen:
1. brauche ich die Where -Abfrage?
Ich will ja alle Datensätze kopieren

2. sehe ich das richtig:
die angabe der Felder mussin der Reihenfolge stimmen.
soll heißen
In deinem Beispiel kopiert Feld3 in Feld1
Richtig?

Vielen Dank nochmal
 
Die WHERE Clause schränkt die Datenmenge ein, wenn Du alles haben willst, kannst Du sie weglassen.
INSERT und SELECT CLAUSE bilden die Zuordnung ausschließlich über die Reihenfolge ab. Idealerweise stimmen die Inhalte tatsächlich zur Zieltabelle und zum Datenmodell.
An der Stelle noch mal die Frage: Weißt Du, was Du da tust?
Deine Fragen sind jetzt bei einfachen Grundlagen angekommen. Du bedienst da nicht Word oder Excel, wo Du schlimmstenfalls ein Dokument platt machst.
Selbst der erfolgreiche Import dieser Daten sagt leider gar nichts darüber, ob das System am Ende stimmige Daten ausgibt.
 
Werbung:
Hallo Dabadepdu,
Deine Frage ob ich da weiß was ich tue scheint natürlich berechtigt.
Ich weis genau wo ich was haben muss!
Ich bin nur des SQL nicht mächtig.
Ich habe aber keine Angst vor solchen Dingen und prüfe auch entsprechend die Ergebnisse.
Mit Deiner Hilfe habe ich inzwischen sehr viele Daten nun einlesen können.
Es kommen zwar neue Aufaben auf mich zu, aber auch Diese Probleme sind lösbar.
Vielend Dank
 
Zurück
Oben