Seite 1 von 1

konvertieren von DBF nach SQL mit key

Verfasst: Fr, 22. Apr 2011 12:29
von Manfred
Hi,

wie schon gesagt, ich "spiele" ein wenig mit SQL. Jetzt habe ich natürlich etliche DBF Dateien, die ich in eine SQL Datenbank übernehmen möchte. Bisher habe ich die ID eines jeden Satzes selbst verwaltet und somit auch selbst vergeben. Darüber werden die einzelnen DBF miteinander verbunden. Wie bekommt man denn die derzeitigen ID in eine SQL Tabelle? Es sieht ja so aus, dass die SQL DB die Keys selber verwaltet und hochzählt. Ich möchte aber den Grundbestand zunächst übernehmen, muß aber dabei die ID aus den DBF erhalten, damit die Verknüpfungen weiterhin stimmig sind. Wie löst man sowas? Stellt man zu Anfang das Autoincrement der SQL Tabelle ab und übernimmt dann zuerst die Daten um dann das Autoincrement wieder einzuschalten? Aber woher weiß die SQL Tabelle dann, ab wo gezählt werden muß? Oder wie macht man sowas?

Re: konvertieren von DBF nach SQL mit key

Verfasst: Fr, 22. Apr 2011 12:37
von Martin Altmann
Moin,
wäre eine Möglichkeit - sequence.
Bsp.:

Code: Alles auswählen

CREATE SEQUENCE  _schema_._sequence-name_ MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 21642502 NOCACHE  NOORDER  NOCYCLE
Viele Grüße,
Martin

Re: konvertieren von DBF nach SQL mit key

Verfasst: Fr, 22. Apr 2011 12:38
von Manfred
:shock:

das verstehe ich jetzt überhaupt nicht. Was macht dass denn?

Ach so, das müßte dann am Schluß laufen, wenn alles übernommen wurde?

Re: konvertieren von DBF nach SQL mit key

Verfasst: Fr, 22. Apr 2011 12:46
von Martin Altmann
Im Prinzip.
Ist halt eine Sequenz, die Werte von 1 bis 9999999999999999999999999999 annehmen kann und bei 21642502 beginnt.

Viele Grüße,
Martin

Re: konvertieren von DBF nach SQL mit key

Verfasst: Fr, 22. Apr 2011 16:16
von Manfred
Hm

und dann? Was passiert denn dann?

Re: konvertieren von DBF nach SQL mit key

Verfasst: Fr, 22. Apr 2011 16:23
von Jan
Du bekommst eine Satz-ID, die bei dem von Dir gewünschten Wert anfängt. Damit Du bestimmst, welche Werte dadrin stehen. Das wolltest Du doch?

Jan

Re: konvertieren von DBF nach SQL mit key

Verfasst: Fr, 22. Apr 2011 16:30
von Manfred
also wenn ich fertig bin mit der Übernahme, geht es mit der gewünschten Nummer weiter. Dann aber wieder automatisch, wenn ich es einschalte?

Re: konvertieren von DBF nach SQL mit key

Verfasst: Sa, 23. Apr 2011 9:52
von brandelh
Hallo Manfred,

wenn du tatsächlich in beiden Dateien die gleiche RecNo() haben willst, hast du ein Problem.
Bei DBF wird die RecNo() bei jedem PACK geändert, du könntest eine INTEGER nutzen und mit der recno() füllen.
Das funktioniert, bis zum nächsten PACK :!:
Ein AUTOINCEMENT Feld in der SQL DB ist als primary key nötig, aber untauglich um die Verknüpfung mit der DBF herzustellen.
Denn nach einem Löschvorgang und neu Einlesen, machen diese dennoch mit den bisherigen höchsten Wert weiter.
Ähnlich dem autoinkrement von FOXDBE ...
Ich nehme immer ein vergleichbares Feld mit gleichem Inhalt in beiden Datenbanken.

Re: konvertieren von DBF nach SQL mit key

Verfasst: Sa, 23. Apr 2011 9:57
von Manfred
Öh Recno()?

Habe ich nichts von gesagt. ID ist gemeint. Selbstvergeben. Eigener Primary Key.

Re: konvertieren von DBF nach SQL mit key

Verfasst: Sa, 23. Apr 2011 20:29
von AUGE_OHR
Manfred hat geschrieben:wie schon gesagt, ich "spiele" ein wenig mit SQL.
du sagtest doch MySQL

Frage : mit PhP oder Xbase++ ?

für Xbase++ gibt es ja die libmysql.dll ( benötigt Ot4xb) von Hector Pezoa.

Re: konvertieren von DBF nach SQL mit key

Verfasst: So, 24. Apr 2011 2:37
von brandelh
Hallo Manfred,

ICH habe bei meinen MySQL DBs immer ein Feld RecNo, LONG(8) autoincrement - dieses nutze ich für den eindeutigen Zugriff auf einen Datensatz.
ZUSÄTZLICH nutze ich - wie du wohl auch - ein ID Feld, das in beiden vom gleichen Typ ist (meist Zeichenfeld, kann aber auch numerisch sein.).
Zusammengehörige Tabellen in MySQL werden dann über das Feld RecNo verknüpft. So kann ich die ID nachträglich austauschen ohne die Verbindung zu kappen.

Re: konvertieren von DBF nach SQL mit key

Verfasst: So, 24. Apr 2011 9:31
von Manfred
@Jimmy

Im Moment nur SQL als solches im Zusammenhang mit mysql, oder PostgreSQL. Es geht erstmal nur darum die DB zu erstellen nebst den Tabellen um sich an neue Datentypen zu gewöhnen und wie man die wann einsetzt. Reines Lernen, planen und testen. Mehr
nicht. Dann werde ich wohl sehr wahrscheinlich zu Anfang mit PHP daran gehen. Und dann schaue ich mal weiter...

@Hubert,

ich habe einfach nur das Feld ID. Aber da hätte ich schon gleich eine Frage an Dich. Warum Long(8)? Ich habe mediumint(8). Ich möchte doch eine Breite von mindestens 8 haben und es soll numerisch sein.

Re: konvertieren von DBF nach SQL mit key

Verfasst: So, 24. Apr 2011 10:02
von brandelh
Hi,

LONG(8) habe ich geschrieben, weil ich eine INTEGER UNSIGNED Variable mit genügend Resourcen meinte.
8 Stellen bekommt man in deutlich weniger unter, deine 8 Byte Varable kann (Zitat aus einer doku):

long = -9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807 64-Bit-Ganzzahl mit Vorzeichen (8 Byte = 8x8bit)

somit habe ich da deutlich übertrieben, eine 32 bit LONG sollte vom Bereich auch reichen ;-)

long 32 bit unsigned 0 bis 4.294.967.295

Re: konvertieren von DBF nach SQL mit key

Verfasst: So, 24. Apr 2011 10:07
von Manfred
Hi Hubert,

das ist das, woran ich mich erstmal gewöhnen muß. Was nimmt man warum wofür. Ich habe einfach einmal ein paar Anleitungen gelesen und dann probiert.