Seite 1 von 1

DBF2MySQL

Verfasst: Fr, 15. Mär 2013 20:38
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

Re: DBF2MySQL

Verfasst: Fr, 15. Mär 2013 22:08
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

Re: DBF2MySQL

Verfasst: So, 17. Mär 2013 12:33
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;

Re: DBF2MySQL

Verfasst: So, 17. Mär 2013 13:38
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.

Re: DBF2MySQL

Verfasst: So, 17. Mär 2013 13:50
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.

Re: DBF2MySQL

Verfasst: So, 17. Mär 2013 14:13
von DSE
Dank euch!!!

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

Viele Grüße
Ayhan

Re: DBF2MySQL

Verfasst: Mo, 18. Mär 2013 9:03
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 ;-)

Re: DBF2MySQL

Verfasst: Di, 19. Mär 2013 0:11
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".

Re: DBF2MySQL

Verfasst: Di, 19. Mär 2013 6:54
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.