none
Tabelle von Access 2013 per VBA / SQL auf SQL Server 2014 kopieren

    Frage

  • Hallo, allerseits!

    Ich suche schon seit einiger Zeit eine Lösung, finde aber nichts. Es geht um folgende Konstellation:

    a) Eine Access-2013-Datenbank mit VBA-Modul - Diese importiert eine CSV-Datei in eine (lokale) Tabelle, paßt noch einiges an den Daten an und soll diese dann auf einen MS-SQL-Server kopieren, wobei die Tabelle, wenn sie dort bereits existiert, überschrieben werden soll.

    b) Ein MS-SQL-Server 2014 auf einem entfernten Netzwerk-Server - Dieser hat keinen Zugriff auf die Access-Datenbank, weswegen der SQL-Befehl auch nicht dort ausgeführt werden kann.

    Und die Lösungen, die ich bisher so gefunden habe, gingen meist in die andere Richtung, also Daten vom SQL-Server in die lokale Access-Datenbank zu holen. Und die anderen gingen davon aus, daß der SQL-Server auch auf die Access-Datenbank zugreifen kann, was hier ebenfalls nicht der Fall ist. Das "pull" vom Server fällt also aus, ich muß die Daten per "push" von der Access-Datenbank in den SQL-Server bringen

    Mein Ansatz wäre:
    SELECT * INTO tbl2 IN dbs2 FROM tbl1;
    (wobei tbl1 und tbl2 durchaus den gleichen Namen haben können...)

    Ich krieg bloss keine Syntax hin, was ich in o.a. SQL-Befehl für tbl2 (und ggf. dbs2) eintragen muß, damit ich mit docmd.runsql (oder ggf. dbs1.execute) die Tabelle von Access auf den Server bekomme.

    Wichtig vielleicht noch:

    Die Tabelle muß nicht verbunden werden. Die Access-Datenbank ist in diesem Fall nur ein Konverter für die CSV-Daten. Die Daten auf dem SQL-Server werden an anderer Stelle von Excel aus benutzt. Sollte eine Verbindung als Unterstützung für den SQL-Befehl allerdings sinnvoll sein, spricht natürlich nichts dagegen.

    Ich hab Lösungen gesehen, wo mit ADO der Datenbestand zeilenweise übertragen wurde. Das würde ich unbedingt vermeiden wollen. Wir reden hier von 4 CSV-Dateien mit insgesamt rund 200.000 Datensätzen. Und den Overhead, erst die Tabellenstruktur auf dem Server zu erzeugen, würde ich gerne dem SQL-Befehl überlassen, statt das per VBA selbst zusammen zu frickeln.

    Kann mich hier jemand in die richtige Richtung schubsen?

    Gruß, Michael

    Mittwoch, 18. Oktober 2017 08:02