Daten in andere DB kopieren

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Daten in andere DB kopieren

    Hallo @ All,

    ich möchte gerne mittels einem kleinen VB.Net Programm,
    alle Datensätze in einer Tabelle einer Access-DB in eine andere Access-DB kopieren.

    Hintergrund:
    In einem Programm von mir sind Tabellen in einer DB hinzugekommen und ich möchte einen Updater machen.
    Bisher konnte ich einfach mit einem Setup immer alle Dateien bis auf die Datenbank überschreiben, das geht nun nichtmehr.

    Hättet Ihr einen Lösungsansatz für mich?
    Gerne auch via normalem ADO...

    Viele Grüße + Noch ein Schönes Restwochenende,
    Joshua
    Ich verstehe das so, dasser von einer DB in die annere kopieren will. Und da wäre am elegantesten iein listenreiches Sql-Command, wie

    SQL-Abfrage

    1. Insert Into db2.ZielTable Values(hi, ha, hu) From Select hi, ha, hu From db1.SourceTable
    prinzipiell gibts glaub sowas, müsstemanmal eine Access-Sql-Dokumentation konsultieren.
    Also ich weiß die Syntax nicht, und glaube auch fast, dasses für Access nicht geht, aber unter MySql oder SqlServer ist sowas glaub drinne, aber wirklich Ahnung habichnich.

    Mit ADO müssteman halt die Tabelle mit dem einen DataAdapter in eine Dataset-Tabelle laden, dann iwie alle RowStates auf Modified setzen, und das Dataset dann mit einem anneren DataAdapter in die annere DB updaten.

    Oder - ohne ADO - ein Select-Command mit einem DataReader abfahren, und dann Zeilenweise die Werte in ein Insert-Command geben, was auf die annere DB connected ist.
    Ich hab sowas noch nie gebastelt, aber wunder mich eiglich, dass niemand was dazu weiß.
    Also ich hab gerade mal meine Access 2003er aufgemacht und wennde da eine db offen hast, dann haste da unter "Datei"/"Externe Daten" ein LoadFileMenue, mit dem du dir deine (alte) *.mdb raussuchst und dann kannst du dir aus dieser Datenbankdatei ALLES rausexportieren, was du willst. Ebenso kannste auch die alte *.mdb öffnen und einzelne Tabellen exportieren (Rechtsklick auf die Tabelle und dann Ziel-mdb angeben).
    Außerdem, wenn eine Tabelle um Spalten erweitert werden muss: dann mache ich die doch einfach im Entwurfsmodus auf und mach Spalten ran, bis der Arzt kommt. Deswegen verstehe ich diesen Umweg über VB nicht. Access ist doch gerade auf Benutzerfreundlichkeit getrimmt bis zum Abwinken. Wenn ich Tabellen kopieren muss, dann mach ich das einfach mit Copy und Paste. Access fragt mich noch höflich: Nur die Struktur oder auch die Daten?
    Oder ich interpretiere die Fragestellung völlig falsch. Dann vielleicht nochmal erklären, was du brauchst.
    Ich code nur 'just for fun'! Damit kann ich jeden Mist entschuldigen, den mein Interpreter verdauen muss :D
    Hallo Leuts,
    ich muss mich dolle entschuldigen.

    Da ich hier ja im Datenbankforum bin, hätte ich dazusagen müssen,
    dass sich das ganze um VB.Net dreht - Also nicht um Access selber. Das sind nur die Datenbanken.

    Es handelt sich um ein komplettes Programm unter VB.Net.

    JoRu1407 schrieb:

    In einem Programm von mir sind Tabellen in der DB hinzugekommen und ich möchte einen Updater machen.

    Ich glaub ich hab das schon verstanden, denke aber, da gibts kein Patentrezept.
    Um eine in Betrieb befindliche DB durch einen Updater upzudaten musstehalt sehr zuverlässiges Sql schreiben, und ein brauchbares Versionierungs-Konzept haben.
    Eine "hinzugekommene Tabelle" ist ja eine Veränderung der DB-Struktur, und kann viel bedeuten
    • leere Tabelle der DB zufügen
    • Tabelle und Daten zufügen
    • Beziehung zu anneren Tabellen zufügen
    • Spalten (ForeignKeys) zu anneren Tabellen zufügen
    • Dann aber auch gültige Werte in die ForeignKeys der bestehenden Datensätze eintragen - das dürfte extrem kompliziert werden

    Das mit der Versionierung ist fies, weil kann ja sein, du bringst 2 Updates raus: Dann updated der eine Kunde von v1->v2->v3, ein anderer will aber gleich von v1->v3 updaten - also da einen Updater schreiben, der nicht versehentlich den Datenbestand schrottet, ist glaub nicht ganz trivial.

    Einen Patent-Ansatz für sone Umstrukturierung "on-the-fly" weißichnich - wie gesagt: sorgfältiges Sql schreiben, mit so Befehle wie

    SQL-Abfrage

    1. Drop Table
    2. Alter Table
    3. Add Constraint
    4. evtl. Rename Table
    wasweißich.

    V.a. eine zuverlässige Backup-Funktion in den Updater einbauen, fallses crasht. Vlt. zippen - und dann muß man sich eine Namensgebung für die Zips ausdenken, dass die nicht einander überschreiben.
    Ich räume das Thema nochmal neu auf, habe mittnerweile folgenden Code gefunden und angepasst:

    VB.NET-Quellcode

    1. Dim oConn As New ADODB.Connection
    2. With oConn
    3. .CursorLocation = ADODB.CursorLocationEnum.adUseClient
    4. .Open("Provider=Microsoft.Jet.OLEDB.4.0;" & _
    5. "Data Source=" & Application.StartupPath & "\Vokabeln.mdb;" & _
    6. "Persist Security Info=False")
    7. End With
    8. dbCopyTableExtern(oConn, "Rechnungen", App.Path & "\ABLAGE.MDB", "Rech2004")


    Ja, ich weiß, dass ist ADO, aber zu ADO.Net habe ich leider garnichts gefunden.
    Ich möchte gerne eine komplette Tabelle aus DB A in DB B kopieren.

    Allerdings wird in obigem Code "dbCopyTableExtern" unterkringelt und ist garnicht vorhanden...

    JoRu1407 schrieb:

    Allerdings wird in obigem Code "dbCopyTableExtern" unterkringelt und ist garnicht vorhanden
    Wenn du schon Code von irgendwoher kopierst, solltest du wenigstens versuchen, ihn zu verstehen.
    cbCopyTableExtern ist eine Funktion, die du ebenfalls mitkopieren solltest.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --