SQL - wo anfangen

alles was zunächst nicht kategorisierbar ist

Moderator: Moderatoren

Antworten
STEPHAN
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 116
Registriert: Do, 29. Mai 2008 20:46
Hat sich bedankt: 1 Mal

SQL - wo anfangen

Beitrag von STEPHAN »

Hi,

bislang habe ich nur mit DBFs gearbeitet. Im Büro haben wir ADS und zu "Hause" habe ich nicht so umfangreiche Daten gehabt.

Nun habe ich aber eine Liste mit 28.237.532 Datensätzen, die ich bearbeiten muss. DBF scheint da an seine Grenzen zu stoßen.

Ich habe noch nie mit SQL gearbeitet, wo würde ich da anfangen ?

Bin für Tips sehr dankbar.

Danke

Stephan
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: SQL - wo anfangen

Beitrag von Manfred »

Hi Stephan,

woran machst Du das fest, dass DBF dort an seine Grenzen stößt?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: SQL - wo anfangen

Beitrag von brandelh »

Hallo Manfred,

vermutlich an der maximalen Dateigröße ;-)
2.000.000.000 (gerundet für 2 GB) / 28.237.532 = 70.82

wenn also mehr als 70 Zeichen pro Satz benötigt werden ist Feierabend.
Etwas mehr müsste möglich sein wenn man die Obergrenze genau erforscht, angeblich 2,4 oder 2,6 GB ?
Dann kommt es natürlich noch auf die Art der nötigen Auswertung an, bei der Größe muss man
sehr geschickt jede unnötige Arbeit in der Schleife vermeiden und MIT EINEM Durchgang alles berechnen ...

SQL kann das normalerweise besser ;-)

Bei SQL würde ich mit SQLExpress() anfangen, zum probieren und für kleine Tools reicht die Demoversion (Ende nach 1 Stunde).
Wenn die Dateigröße nicht das Problem ist, kann man mit ODBC auch auf eine DBF per SQL zugreifen ;-)

Für SQL selbst, habe ich mir am Anfang "SQL for dummys" gekauft, aber wenn es nichts gedrucktes sein muss findet man bei Google mit dem Suchbegriff "sql lernen" viele Infos und auch online tutorials.
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: SQL - wo anfangen

Beitrag von Manfred »

Alles klar,

ich hatte irgendwie im Kopf 1 oder 2 Milliarden Datensätze. Mich hat die "exakte" Zahl von 28.xxx.xxx Sätzen verwirrt.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
STEPHAN
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 116
Registriert: Do, 29. Mai 2008 20:46
Hat sich bedankt: 1 Mal

Re: SQL - wo anfangen

Beitrag von STEPHAN »

Hi,

ja leider sind die Datensätze etwas länger.

Wenn ich in XBase zu Hause bin und SQL gar nicht kenne, also am liebsten gar nicht viel ändern möchte, wie lege ich da am besten los ?

Mir ist nicht klar, wie ich aus XBase an die SQL Datenbank komme.

Danke

Stephan
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: SQL - wo anfangen

Beitrag von brandelh »

Hi,

das geht nicht, mit der ODBCDBE (in der Prof. Sub.) wird zwar sowas versprochen, aber
gerade wenn es um so große Datenbestände geht, MUSS man SAUBER SQL nutzen um azeptables Verhalten zu erlangen.
Außerdem musst du auch noch den SQL Server aufsetzen.

ABER:

Du könntest die DBF in mehrere DBF aufteilen, wobei die Verbindung über die RECNO() zu wählen wäre (also)

70 Byte Felder je Datei und Satz x gehört in allen zu einem Datensatz.

ICH vergleiche SQL gerne mit einem Array, wie wenn du ...
beim DBF Durchlauf von jedem Datensatz die gewünschten Ergebnisse in eine Array Zeile speicherst.
Erst nach dem Durchlauf sortierst du da Array und arbeitest es dann ab ...
Du definierst in einer Zeile die Felder, dann die Kriterien und zum Schluss die Sortierfolge.
Danach arbeitest du die Ergebnismenge ab ...

Code: Alles auswählen

SELECT   feld1, feld2,...   FROM    tabelle   WHERE    suchbedingung    ORDER BY sortieren nach

do while GibtEsNochWelche()
    ...
gerade aktuell vermisse ich diese Aufrufform sehr, denn ich biege mir fast einen ab die verteilten Daten wie gewünscht möglichst performant zu selektieren. Wehe wenn man sich dabe mit dem Index vertut, oder - wie ich gestern - SCOPE TOP und BOTTOM verwechselst #-o

PS: bei SQLExpress sind sehr schöne Beispiele dabei und es hat mir geholfen Daten aus einer sehr seltsamen Access Anwendung zu extrahieren, sodass mir Access erspart blieb :D
Gruß
Hubert
Sören
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 205
Registriert: Mo, 07. Aug 2006 10:18
Wohnort: Leipzig
Danksagung erhalten: 11 Mal

Re: SQL - wo anfangen

Beitrag von Sören »

Hallo Stephan,

möglicherweise ist die DELDBE oder die SDFDBE eine Option für Dich. Die Dateigröße ist bei beiden DBE's nicht (bzw. auf die Systemresourcen) limitiert.

Nicht alle, aber die wichtigsten Datenbank-Befehle und -Funktionen (Skip, Set Realation, dbGotop(), Locate etc.) stehen zur Verfügung.

Allerdings ergeben sich bei der Nutzung einige Einschränkungen. So können keine Memofelder verwendet werden. Bei SDFDBE können keine Datensätze gelöscht und bei SDFDBE keine Indexe erzeugt werden. Genaues kannst Du in der Xbase++-Doku nachlesen.
Beste Grüße,
Sören
Antworten