von Access nach Mysql ohne ODBC

Alles, was MariaDB und MySQL betrifft, kann hier besprochen werden.

von Access nach Mysql ohne ODBC

Postby kaffee » 05. July 2007 10:47

Hallo,

bin Einsteiger und habe folgendes Problem:

Es gibt ein Access-Datenbank mit ca. 30 Tabellen (Stundenplan von einer Schule)
und Mysql-Datenbank unter Solaris (im Internet abrufbar) mit 7 Tabellen (Computerräume- Belegung). In diesen 7 Tabellen werden die Werte manuell korrigiert. etwa 15 Datensätze insgesamt. Die Idee war die Daten von Access nach mysql zu Importieren, leider beinhaltet mein Access-Datenbank nicht alles, aber zumindest 3 von 7 Tabellen könnte man nach mysql importieren.
Ich dachte an ein Macros oder so änliches...
Habe schon exportsql.txt ausprobiert, doch ich brauche nicht alle 30 Tabellen und Werten in mysql.

Gibt es Ideen, wie man es realisiert?
Für jeden Hinweis und Tipp bin ich dankbar!!!!!!!
kaffee
 
Posts: 7
Joined: 05. July 2007 10:41

Postby Mätes » 05. July 2007 11:14

Könntest es hiermit probieren:

http://www.mysql.de/products/tools/migration-toolkit/

Ist eine Anwendung, die Daten von mehreren DB-Quellen Richtung MySQL portieren kann.

gruß
m
User avatar
Mätes
 
Posts: 142
Joined: 13. April 2006 09:34
Location: kölle

Postby kschroeder » 05. July 2007 13:34

Wahlweise könntest Du die Daten aus Access schlicht in eine CSV-Datei exportieren. Beim Export sind Dir ja aus Access kaum Grenzen gesetzt.

Die CSV-Dateien kannst Du dann wieder importieren. Du musst nur vorher bereits die Struktur in MySQL angelegt haben.
kschroeder
 
Posts: 254
Joined: 11. May 2007 13:33

Postby kaffee » 07. July 2007 13:44

kschroeder wrote:Wahlweise könntest Du die Daten aus Access schlicht in eine CSV-Datei exportieren. Beim Export sind Dir ja aus Access kaum Grenzen gesetzt.

Die CSV-Dateien kannst Du dann wieder importieren. Du musst nur vorher bereits die Struktur in MySQL angelegt haben.


Ich kann leider kein Tool einsetzen, da die Datenbanken von der Struktur sich unterscheiden. Das wäre aber halb so schlimm, da diverse Tools kann man fein einstellen. Doch es wird fast jeden Tag Änderungen in Access DB geben und dass muss in Mysql wiederspiegelt werden. Also, selbst mit einem Tool wäre es nicht ideal. Meine Überlegungen gehen in folgende Richtung:

Erst mal ein Script (SQL-Abfrage, Macros oder VB) erstellen mit dem eine "Export-Datei" aus Access-DB erzeugt wird, am besten automatisch nach jedem Änderung oder Speicher-Vorgang. Es gibt eine Schwierigkeit dabei, so betrachte ich es zumindest und zwar die Tabellen und Felder-namen sind in beiden DB anders, ich brauche aber die Werte upzudaten.

Diese Datei muss in Web oder auf einem Netzwerklaufwerk verlegt werden (keine Diskrete Information). (mit Hilfe von Batch-Script oder so. än)

Auf dem Solaris Rechner muss ein Dienst (???Script) diese Pfad überwachen (mit Cronjob) und bei Eingang von neuen *.sql Datei automatisch in Mysql importiert.

Somit habe ich eine ToDo-Liste:

1. Abfrage in Access DB (Was dazu besser geeignet?)
2. Script, mit dem ich Export-Datei irgendwie zu Solaris Rechner bringe. (Es kann auch in Web-Verzeichnis gespeichert werden, die Hauptsache Solaris Rechner drauf kommt).
3. Und ein Mechanismus, mit dem ich automatisch Update-Vorgang durchführe.

Sicherlich ist es wünschenswert erst mal sich mit Theorie auseinandersetzen. Doch die Lösung muss ich schon in ein Paar Wochen vorliegen. Also, bin ich jedem dankbar, der mich mit einem Rat unterstützt!
Last edited by kaffee on 07. July 2007 16:04, edited 1 time in total.
kaffee
 
Posts: 7
Joined: 05. July 2007 10:41

Postby Knight1 » 07. July 2007 15:36

kaffee wrote:... Ich kann leider kein Tool einsetzen, da die Datenbanken von der Struktur sich unterscheiden. ...


Dann würde ich hingehen und die Strukturen der beiden Datenbanken vereinheitlichen.
Solange beide Datenbanken verschiedene Tabellen- und Zellenstrukturen aufweisen wird es schwierig ein update durchzuführen. Das geht dann nur mit einem eigenen Script bzw. Programm in welchem Du Rücksicht auf auf die individuellen Strukturen beider DB's nimmst.

Diese Standardschnittstellen und Programme setzen vorraus dass sowohl die Quelldatenbank als auch die Zieldatenbank die gleiche Struktur haben.


Kai aka Knight1
Image
User avatar
Knight1
 
Posts: 310
Joined: 18. October 2003 10:03
Location: Trier
Operating System: Windows 7 Ultimate x64

Auswahl von Szenarien

Postby kaffee » 08. July 2007 10:48

Die DB zu vereinheitlichen ist auf jeden Fall gute Idee!

Jetzt muss ich mich zwischen zwei Szenarien entscheiden:

Var1:
Im Access wird eine Abfrage durchgeführt (mit Hilfe von SQL-Abfrage, Macros oder VB) und eine Datei *.sql oder *.csv erzeugt.
Mit Batch-Script (per ftp) wird dann sie auf Server in Ordner "Ziel"gebracht.
Auf dem Server überwacht ein Bash-Script (Cronjob) "Ziel"-Ordner, ob eine Datei da ist. Wenn nicht, nichts tun. Wenn eine Datei da ist mit Befehl nach mysql importieren und anschließend Datei löschen.
(hier habe ich keine Ahnung, ob man per Konsole-Befehl importieren kann, also ohne phpmyadmin)

Var2:
Im Access wird eine Abfrage durchgeführt (mit Hilfe von SQL-Abfrage, Macros oder VB) und eine Datei export.sql oder *.csv erzeugt.
Mit Batch-Script wird dann sie auf www-Server gebracht.

Auf dem Server ruft ein Bash-Script (Cronjob) ein PHP-Script auf. Das Php-Script prüft auf dem www-Server, ob die Datei da ist und importiert die Daten nach mysql, anschließend Datei löschen.
(da vermute ich große Aufwand bei Php-Script-Erstellung).

Was scheint bessere Lösung zu sein? Es ist sehr wichtig für mich, wie ich was und wie ich weiter es mache!
kaffee
 
Posts: 7
Joined: 05. July 2007 10:41

Postby DJ DHG » 08. July 2007 12:58

Moin Moin!

Wenn ich mir recht erinnere, kann Access sich über ODBC - Treiber auch direkt mir MySql verbinden?
Mysql müsste dazu nur von "außen" erreichbar sein. (Sicherheit beachten!)

mfg DJ DHG

edit:
Da haben wir doch schon mal was :wink:
klick mich!
User avatar
DJ DHG
AF Moderator
 
Posts: 2455
Joined: 27. December 2002 13:50
Location: Kiel

Postby kaffee » 08. July 2007 14:30

DJ DHG wrote:Moin Moin!

Wenn ich mir recht erinnere, kann Access sich über ODBC - Treiber auch direkt mir MySql verbinden?
klick mich![/url]



ODBC wäre eine perfekte Lösung! Das war meine erste Idee! Doch MySql befindet sich auf dem Solaris-Rechner. Das geht wohl nicht.
kaffee
 
Posts: 7
Joined: 05. July 2007 10:41

Postby DJ DHG » 08. July 2007 14:46

kaffee wrote:ODBC wäre eine perfekte Lösung! Das war meine erste Idee! Doch MySql befindet sich auf dem Solaris-Rechner. Das geht wohl nicht.

Solange die Solaris Kiste über eine IP verfügt, auf die man zugreifen kann, und
MySql (wie auch schon erwähnt) Verbindungen von außen zulässt, sehe ich da kein Problem.

http://www.elektronikschule.de/~grupp/mysql/myodbc/

mfg DJ DHG
User avatar
DJ DHG
AF Moderator
 
Posts: 2455
Joined: 27. December 2002 13:50
Location: Kiel

Postby kaffee » 08. July 2007 16:31

Ich muss zugeben, ich bin kein Kenner auf dem Gebiet. In der Anleitung (Danke!) steht aber:

...Dazu wird die Datenbank auf die nicht direkt zugegriffen werden kann, hinter einem ODBC-Treiber "versteckt"....
...Fazit: Im System muss ein auf die jeweilige Datenbank angepasster ODBC-Treiber installiert sein ...

Wenn ich das richtig verstanden haben, muss der Treiber auf dem Rechner installiert werden, auf dem Mysql läuft oder? (in meinem Fall also Solaris)...
kaffee
 
Posts: 7
Joined: 05. July 2007 10:41

Ich verfolge weiter die Variante 1.

Postby kaffee » 09. July 2007 08:22

Zur Erinnerung:

1.Ein Script führt eine Abfrage bei Access DB. Es erzeugt eine Export-Datei in *.sql oder *.csv. Per Batch-Script wird die Datei zum Solaris-Rechner gebracht:

Inhalt von ftp.bat:

ftp ftp-adresse.de
ftpusername
ftppasswort

CD zielverzeichniss
ASCII
PUT C:\pfad\export.sql
bye

Ein zweites shell-Script überwacht Verzeichnis und prüft mit crontab permanent, ob eine neue Datei da ist :
Eintrag in Crontab:
# m h dom mon dow command
*/15 7-22 * * 1-6 /usr/bin/waechterscript.sh


Inhalt von Shell-Script (waechterscript.sh):

#!/bin/bash

if test -f /pfad/export.sql
then

mysqlimport --host=host_name --port=port_num --password[=password] -r --lock-tables Datenbankname export.sql

rm /pfad/export.sql
else
#echo "Datei nicht vorhanden"
fi


An der Stelle ist viel zu beachten. Ein Import habe ich bisher mit phpmyadmin durchgeführt, also per Console muss ich einiges einstellen. Da hätte ich gern Tipps von eurer Seite. Wenn ihr Fehler entdeckt bitte melden!
kaffee
 
Posts: 7
Joined: 05. July 2007 10:41

Postby Hanspeter Thöni » 09. July 2007 10:34

kaffee wrote:Wenn ich das richtig verstanden haben, muss der Treiber auf dem Rechner installiert werden, auf dem Mysql läuft oder? (in meinem Fall also Solaris)...


Nö, der ODBC muss auf den Client (also der Rechner wo Access läuft). Allerdings musst du dich per Netzwerk auf die Datenbank verbinden und anmelden können (User auf Mysql). Dann kann ACCESS (via ODBC) direkt mit Mysql kommunizieren.
Gruss Hanspeter
User avatar
Hanspeter Thöni
 
Posts: 233
Joined: 17. August 2004 10:29
Location: Schweiz

Postby Knight1 » 09. July 2007 12:47

Hanspeter Thöni wrote:... der ODBC muss auf den Client (also der Rechner wo Access läuft). ...


Das ist richtig. Allerdings müssen in beiden Datenbanken (ACCESS und MySQL) die Strukturen stimmen. Von daher auch meine Empfehlung beide Datenbank zu vereinheitlichen was die Datenbankstruktur angeht.

Swoeit ich weiß kann Access aber nur neue Tabellen anlegen und keine vorhandenen Tabellen updaten bzw. überschreiben. Korrigiert mich bitte wenn in diesem Punkt falsch liege.


Ausserdem legt Access keine Primary-Keys, Autoincrements usw. an.



Kai aka Knight1
Image
User avatar
Knight1
 
Posts: 310
Joined: 18. October 2003 10:03
Location: Trier
Operating System: Windows 7 Ultimate x64

Abfrage

Postby kaffee » 09. July 2007 13:47

Knight1 wrote:
Hanspeter Thöni wrote:... der ODBC muss auf den Client (also der Rechner wo Access läuft). ...


Von daher auch meine Empfehlung beide Datenbank zu vereinheitlichen was die Datenbankstruktur angeht.


Kai aka Knight1


Die Access-Datenbank wird für mehrere weitere Zwecke benutzt und beinhaltet wesentlich mehr als ich in MySQL brauche . MySQL anzupassen, scheint möglich zu sein. Doch eine komplexe Abfrage von Access-Datenbank ist unvermeidlich, wenn an die Daten kommen will.
Die Tabelle, die ich upzudaten habe besteht aus 6 Felder. Vier davon kann ich mit einer Abfrage von Access-Datenbank holen. Die Restliche zwei, noch nicht, da die keine direkte Verbindungen zu relevanten Tabellen haben oder ich erkenne sie nicht. (Die Access Datenbank ist nicht mein Werk).
Ich muss schauen, wie ich das hinkriege, dann kann man diese Abfrage als SQL-Abfrage darstellen und dass ist schon was.

MfG
Kaffee
kaffee
 
Posts: 7
Joined: 05. July 2007 10:41


Return to MariaDB - MySQL

Who is online

Users browsing this forum: No registered users and 9 guests