Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - Rows von einer FireBird-DB in eine andere FB-DB kopieren?


Christoph1972 - Do 06.09.12 18:11
Titel: Rows von einer FireBird-DB in eine andere FB-DB kopieren?
Hallo zusammen!

Ich muss Datensätze von einer FireBird Datenbank in eine Andere FB-DB kopieren. Das Admin-Tool „IBOConsole“ kann das leider nicht. Es gibt zwar scheinbar andere Tools mit denen das geht, diese möchte ich mir jedoch nicht zulegen, da dieser Kopiervorgang nur ein einziges mal durchgeführt werden muss. Jetzt wollte ich das auf die „schnelle“ selber machen, mit SELECT * FROM Quelle und INSERT INTO Ziel. Nur geht das in diesem Fall nicht auf die schnelle, da die Tabelle sehr viele (ca.80) Spalten hat und diese zudem unmöglich benannt sind „z1_POS_1_LE_2“. Bei der üblichen Insert Methode (INSERT INTO Ziel („z1_POS_1_LE_2, ……..) values(„232322“,………) ist das eine unendliche Arbeit, bei der Tippfehler vorprogrammiert sind und ich habe keine Lust das alles für eine einmalige Aktion zu machen. Daher meine Frage, gibt es eine Möglichkeit, eine ganze DataTable in eine DB zu schreiben, alla INSERT INTO Ziel MeineTabelle. Stellt ADO.Net zufällig so eine Methode bereit und ich kenne sie nur nicht??? Die Tabellen sind identisch, von der Seite wird es schonmal keine Probleme geben.

Vielleicht hat hier wer eine Idee wie ich das elegant und schmutzig lösen kann?


Christoph1972 - Do 06.09.12 18:20

Ich glaube das hier ist das passende: http://www.java2s.com/Code/CSharp/Database-ADO.net/UseDataTabletoupdatetableinDatabase.htm


Ralf Jansen - Do 06.09.12 19:36

Zitat:
ist das eine unendliche Arbeit, bei der Tippfehler vorprogrammiert sind und ich habe keine Lust das alles für eine einmalige Aktion zu machen.

Zitat:
Vielleicht hat hier wer eine Idee wie ich das elegant und schmutzig lösen kann?


Du kannst scheinbar programmieren als schreib dir ein Programm das die Tabellenmetadaten ausliest und dir dein Select/Insert generiert.


Edit:

Hab mir gerade deinen Link angesehen. Wenn du entsprechend dem Code deine DataTable füllst kannst du danach einfach den Modified State der einzelnen Rows ändern. Dazu in einem foreach je Row die SetAdded Methode aufrufen und danach die DataTable durch einen 2.ten DataAdapter (entsprechend dem ersten nur mit geändertem Connectionstring) jagen.


Christoph1972 - Do 06.09.12 19:51

user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:

Du kannst scheinbar programmieren als schreib dir ein Programm das die Tabellenmetadaten ausliest und dir dein Select/Insert generiert.

Edit:

Hab mir gerade deinen Link angesehen. Wenn du entsprechend dem Code deine DataTable füllst kannst du danach einfach den Modified State der einzelnen Rows ändern. Dazu in einem foreach je Row die SetAdded Methode aufrufen und danach die DataTable durch einen 2.ten DataAdapter (entsprechend dem ersten nur mit geändertem Connectionstring) jagen.


Hallo Ralf!

Danke für deine Anregungen (wobei ich bei der ersten nicht verstanden habe was du meinst (aber egal!))

Bei der zweiten Anregung war meine Idee ähnlich. Ich hätte einefach neue Rows, mit den Daten, in einer Tabelle angelegt und dann ein Update durchgeführt, ich denke das sollte genau so gut gelingen, oder?