Übernahme von MS-ACCESS

Datenbank Migration (z. B. von MySQL auf PostgreSQL)
PGmicha
Neuer Benutzer
Beiträge: 7
Registriert: Di 19. Feb 2019, 17:04

Übernahme von MS-ACCESS

Beitrag von PGmicha » Di 19. Feb 2019, 17:27

Hallo,

ich möchte eine größere Anzahl von Tabellen aus einer MS-ACCESS (Frontend / Backend getrennt) übernehmen. Die Daten sollen zukünftig in PostgreSQL gespeichert werden. Die ACCESS-DB liegt noch auf einem WINDOWS-Laufwerk, PostgreSQL läuft unter LINUX.

Auf der Suche nach der besten Methode zur Übernahme habe ich zwei Seiten gefunden:
  • Das offizielle Wiki: Der in Stage 1 angegebene Link für das Upsizing-Tool funktioniert nicht mehr; damit funktionieren auch die folgenden Schritte nicht.
  • Dies hier aus dem Forum, allerdings verstehe ich den Text
    tabellen in postgrs anlegen und in die access-db verknüpfen (nicht importieren!). dann einfach eine hinzufügen-abfrage erstellen...
    nicht wirklich.
Also: Was ist heute das Mittel der Wahl um die Daten (einmalig) zwischen den PCs und Betriebssystemen zu übertragen?
Danke, Michael

akretschmer
Erfahrener Benutzer
Beiträge: 7677
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: Übernahme von MS-ACCESS

Beitrag von akretschmer » Di 19. Feb 2019, 18:04

Der einfachste Weg wäre vermutlich, die Daten in Access als CSV-dateien zu speichern (je Tabelle eine CSV) die Tabellen in PG passend anlegen und dann die CSV's da einlesen. Dazu gibt es den COPY-Befehl. es gibt IMHO auch Tools, die einen direkten SQL-Dump aus Access machen können.

Versuche also erst einmal den Export aus Access heraus in einen menschlich lesbaren Dump oder in CSV, das wäre der erste Schritt. Wie viele Tabellen sind es? Gibt es viele Foreign-Key-Constraints und so?
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Gisman
Erfahrener Benutzer
Beiträge: 1140
Registriert: Fr 20. Jan 2006, 15:30
Wohnort: Pfalz
Kontaktdaten:

Re: Übernahme von MS-ACCESS

Beitrag von Gisman » Mi 20. Feb 2019, 05:32

Du legst die Tabellen in Postgres an, verknüpfst diese Datenbank mit ODBC und liest deine Daten mit einer einfachen Access-Anfügeabfrage nacheinender in die Postgrestabellen. Wenn du den csv-Weg nimmst, achte auf das Encoding.

Gruß Uwe

pogomips
Erfahrener Benutzer
Beiträge: 112
Registriert: Fr 18. Nov 2016, 09:55

Re: Übernahme von MS-ACCESS

Beitrag von pogomips » Mi 20. Feb 2019, 21:57

"verknüpfst diese Datenbank mit ODBC" ist etwas kurz und bedeutet.
Nach der Erstellung der Zieltabellen in PG, erzeugst Du für jede PG Zieltabelle eine Verknüpfung (verknüpfte Tabelle) in Access via ODBC > https://www.youtube.com/results?search_ ... jreload=10
Dann erstellst Du für jede Tabelle eine Anfügeabfrage, die Du einzeln ausführst.

Ich würde es mit einer kleinen Tabelle ausprobieren und bei einer großen Tabelle einen Geschwindigkeitstest machen. Die gleiche Tabelle noch mal mit CSV export / import. Dann entscheiden was schneller läuft und leichter zu handhaben ist.

Ich würde übrigens in beiden Varianten nicht so pingelig mit den Datentypen sein. Wenn erstmal alles drüben ist, kannst Du nach Herzenslust stutzen, vorher wird das nur eine endlose Quälerei.

ulischerrer
Benutzer
Beiträge: 34
Registriert: Mi 22. Okt 2008, 15:20

Re: Übernahme von MS-ACCESS

Beitrag von ulischerrer » Fr 22. Feb 2019, 11:00

Vor etlichen Jahren habe ich das mit einem Skript von hier
http://www.cynergi.com/exportsql-converter.html
gemacht. Das ging prima.
Das habe ich für meine Zwecke noch angepasst.
Wenn der Converter deine Variante wäre und du Interesse an meinen Anpassungen hast dann könnte ich in meinem Archiv kramen und dir die Variante zukommen lassen.

PGmicha
Neuer Benutzer
Beiträge: 7
Registriert: Di 19. Feb 2019, 17:04

Re: Übernahme von MS-ACCESS

Beitrag von PGmicha » Fr 22. Feb 2019, 19:29

Hallo,
vielen Dank für die Rückmeldungen. Es sind ca. 220 Tabellen zu übertragen.

Was meint ihr mit
Du legst die Tabellen in Postgres an
oder
Tabellen in PG passend anlegen
? Die ganzen Strukturen, Feldtypen etc. neu eintippseln? Sehr aufwendig und Fehler-anfällig, denke ich.

@ ulischerrer: Das Skript würde ich sehr gerne verwenden!

ulischerrer
Benutzer
Beiträge: 34
Registriert: Mi 22. Okt 2008, 15:20

Re: Übernahme von MS-ACCESS

Beitrag von ulischerrer » Fr 22. Feb 2019, 22:19

Hallo PGmicha,

siehe hier:
https://www.scherrer-software.de/demo/exportTables.vba

Kopiere den Code in ein neues Modul von Access. Das ist damals in Access 2003 gelaufen, also schon angestaubt.
Passe zuerst die Konstanten im Modulkopf an, insbesondere den Ausgabepfad.
Mit Glück gehts dann direkt aber teste es mal an einer Tabelle. Wie, das siehst du im Code.
Ich hatte mir ein zusätzliches Feld "trans_date" ausgeben lassen, das lässt sich aber ausschalten...

Viel Glück
Uli

pogomips
Erfahrener Benutzer
Beiträge: 112
Registriert: Fr 18. Nov 2016, 09:55

Re: Übernahme von MS-ACCESS

Beitrag von pogomips » Sa 23. Feb 2019, 16:41

Vielleicht hilft auch die FDW Extension mittels ODBC Zugriff auf ACCESS.
Das würde aber bedeuten, man braucht -als Zwischenschriftt- eine Windows Postgresinstallation.

PGmicha
Neuer Benutzer
Beiträge: 7
Registriert: Di 19. Feb 2019, 17:04

Re: Übernahme von MS-ACCESS

Beitrag von PGmicha » Sa 23. Feb 2019, 17:27

Hallo Uli,
vielen Dank, aber leider ist es mit meinem
ulischerrer hat geschrieben:
Fr 22. Feb 2019, 22:19
Glück gehts dann direkt ...
nicht gut bestellt; auch ich habe eine ACCESS2003-Datenbank.

Das Modul läuft grundsätzlich aber:
  • Es verarbeitet keine Tabellen, deren Namen Leerzeichen " " oder Minus "-" enthalten,
  • auch ohne diese Zeichen kommt es zu Fehlern, z.B. "3061 - 1 Parameter wurde erwartet aber es wurden zu wenig Parameter übergeben. Dies ist nur eine Meldung von mehreren verschiedenen und es wird nicht angegeben, bei welcher Tabelle / welchem Feld der Fehler hervorgerufen wird. Die einzige Status-Info leite ich zur Zeit davon ab, die erzeugten sql-Dateien zu lesen und an deren Ende die Abbruchstelle zu identifizieren. Dadurch würde das Finden und Abstellen zu einer tagelangen Prozedur.
Ich muss also eine andere Lösung finden!

Frage: Ich hatte schon einmal eine Prozedur auf Basis einer alten mySQL-Workbench Anwendung, die ACCESS erfolgreich zu mySQL exportierte. Könnte ich die nutzen? Wenn ja, wie?

Danke, Michael

pogomips
Erfahrener Benutzer
Beiträge: 112
Registriert: Fr 18. Nov 2016, 09:55

Re: Übernahme von MS-ACCESS

Beitrag von pogomips » Sa 23. Feb 2019, 17:47

PGmicha hat geschrieben:
Sa 23. Feb 2019, 17:27
Frage: Ich hatte schon einmal eine Prozedur auf Basis einer alten mySQL-Workbench Anwendung, die ACCESS erfolgreich zu mySQL exportierte. Könnte ich die nutzen? Wenn ja, wie?
Wer soll das wissen, wenn Du diese Anwendung hast?
Wenn es geht, dann musst Du halt von mySQL nach Postgres?

Du kannst Dich aber auch mal fragen, wie realistisch es ist, auf diese Weise ein "werkzeug" für eine Migration von Access weg einzusetzen und auf einen Null Fehler Lauf zu hoffen.

Daten Migration ist immer auch Handarbeit. Man will vielleicht nicht jede Tabelle einzeln anfassen, geschweige viele einzelne Datensätze. Aber mit Access als Ausgangsbasis, Leerzeichen und anderer Prosa in ObjectNamen und was weiß ich noch, steht einfach etwas Handarbeit an.
Ich schließe nicht aus, dass es kostenpflichtige Tools gibt, die das alles wegatmen.

Vielleicht tut's auch einfach etwas Handarbeit am VB Code oder die FDW Variante, die ich oben vorschlug.

Antworten