DBF2MySQL

alles zu mySql/mariadb

Moderator: Moderatoren

Antworten
Benutzeravatar
DSE
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 22
Registriert: Di, 24. Apr 2007 22:51

DBF2MySQL

Beitrag von DSE »

Hallo Zusammen,

will gerne meine DBFs auf MySQL importieren. Gibt es bereits eine Funktion hierfür oder könnt ihr mir sagen worauf ich achten muß?

Viele Grüße
Ayhan
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: DBF2MySQL

Beitrag von AUGE_OHR »

DSE hat geschrieben:will gerne meine DBFs auf MySQL importieren.
Gibt es bereits eine Funktion hierfür oder könnt ihr mir sagen worauf ich achten muß?
Frage : "womit" willst du die DBF Daten ( OEM / ANSI ? ) importieren ?

angenommen du hast "nur" die DBF und den SQL-Server installiert :
1.) SQL "Console" auf dem Server öffnen
2.) Tabelle "definieren" ( Fields )
3.) DBF nach CSV "exportieren"
4.) "COPY "+myTable+" FROM "+myData.CSV
zum "importieren"

wenn du mit SQLexpres++ oder mit der "native" Schnittstelle arbeitest :
1.) "CREATE TABLE ..."
2.) "INSERT INTO " + MyTable + " VALUES(" ...
für jeden Record ausführen

zu beachten :

OEM DBF, also die mit NTX Index, sollten wegen "Umlaute" nach ANSI konvertiert werden.
entsprechen sollte IMHO die SQL Tabelle mit WIN1252 ( SQL_ANSI ) arbeiten.
SET CHARSET TO sollte man gleich auf ANSI setzten
gruss by OHR
Jimmy
Benutzeravatar
DSE
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 22
Registriert: Di, 24. Apr 2007 22:51

Re: DBF2MySQL

Beitrag von DSE »

habe versucht eine Test-DBF structur in MySQL zu erzeugen bekomme folgende Fehlermeldung:

SQLState: 42000, ErrorCode:1064
[MySQL][ODBC 5.2(a) Driver][mysqld-5.6.10-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ENGINE=MyISAM' at line 1

Thread ID 1
Called from SQLSTATEMENT:EXECUTE(504)
Called from MAIN(100)

SQLString: CREATE TABLE IF NOT EXISTS `ARTIKEL` (`LAND` varchar(20),`LAGERORT` varchar(3),`GENDER` varchar(15),`AGRUPPE` varchar(20),`ARTKURZ` varchar(20),`ARTBEZ` varchar(50),`BARCODE` varchar(20),`MET` varchar(10)) ENGINE=MyISAM;
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: DBF2MySQL

Beitrag von brandelh »

Am besten eine Tabelle im Admintool anlegen und dann ein paar Daten eingeben.
Nun ein Backup dieses Schemas (Datenbank) erstellen (=> Text mit allen Befehlen und Daten), dort findest du den nötigen SQL Code.
Gruß
Hubert
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: DBF2MySQL

Beitrag von georg »

Hallo, DSE -


wen ich Probleme mit einer SQL-Anweisung habe, kopiere ich sie in die Zwischenablage und führe sie in der MySQL Konsole aus.

Was mir so auffällt, sind die vielen Anführungsstriche. Die brauche ich beim CREATE TABLE eigentlich nicht. Die Fehlermeldung besagt, dass die ENGINE=MyISAM das aktuelle Problem darstellt.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
DSE
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 22
Registriert: Di, 24. Apr 2007 22:51

Re: DBF2MySQL

Beitrag von DSE »

Dank euch!!!

Mit SQL-Editor habe ich das Problem endeckt falsche Hochkommas #-o #-o

Viele Grüße
Ayhan
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: DBF2MySQL

Beitrag von brandelh »

Die satzweise übertragung mit SQLexpress ist übrigens sehr langsam (zumindest bei DBFs > 1000 Recs), den Import mit CSV Datei an der Console kenne ich nicht,
aber eine oben erwähnte "Backup" Datei kann man leicht mit Xbase++ direkt erzeugen und einlesen, das geht viel schneller ;-)
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: DBF2MySQL

Beitrag von AUGE_OHR »

brandelh hat geschrieben:Die satzweise übertragung mit SQLexpress ist übrigens sehr langsam (zumindest bei DBFs > 1000 Recs),
bei vielen "INSERT ..." sollte man, bei PostgreSQL, "autocommit" so lange abschalten ... "das" braucht so "lange"
brandelh hat geschrieben:den Import mit CSV Datei an der Console kenne ich nicht,
hm ... gibt es unter MySQL kein

Code: Alles auswählen

COPY Table FROM STDIN
wenn man den Import über CSV macht müssen die Daten natürlich zu dem SQL Format der Table Fields "passen".
brandelh hat geschrieben:aber eine oben erwähnte "Backup" Datei kann man leicht mit Xbase++ direkt erzeugen und einlesen, das geht viel schneller ;-)
das ist natürlich noch besser weil du da die "Structure" der Table ja schon hast und die Daten dann auch ( vom Type ) "passen".
gruss by OHR
Jimmy
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: DBF2MySQL

Beitrag von georg »

Hallo,


um eine Tabelle oder Datenbank von einem SQL-Server auf den anderen zu transportieren, verwendet man bei MySQL mysqldump und mysql:

Code: Alles auswählen

mysqldump -u root -p -h 192.168.1.1 meinedatenbank.tabelle > meindump.sql
-u (username)
-p (prompt für Passwort)
-h (wenn der Server nicht auf dem gleichen Rechner läuft)
meinedatenbank (Name der Datenbank)
.tabelle (wenn eine einzelne Tabelle gedumpt werden soll)

Code: Alles auswählen

mysql -u root -p -h 192.168.1.2 < meindump.sql
Wenn man sich ansieht, wie mysqldump die Daten einer Tabelle ablegt, kann man analog dazu seine Daten in eine Textdatei schreiben, die dann etwa so aussieht:

Code: Alles auswählen

use meinedatenbank;
insert into tabelle values(...);
Anmerkung: mysqldump erzeugt keine "use meinedatenbank" Anweisung, die muss manuell nachgepflegt werden, sonst läuft's nicht.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Antworten