SQL - wo anfangen
Moderator: Moderatoren
-
- Rekursionen-Architekt
- Beiträge: 116
- Registriert: Do, 29. Mai 2008 20:46
- Hat sich bedankt: 1 Mal
SQL - wo anfangen
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
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
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: SQL - wo anfangen
Hi Stephan,
woran machst Du das fest, dass DBF dort an seine Grenzen stößt?
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!!
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!!
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: SQL - wo anfangen
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![Wink ;-)](./images/smilies/wink.gif)
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![Wink ;-)](./images/smilies/wink.gif)
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.
vermutlich an der maximalen Dateigröße
![Wink ;-)](./images/smilies/wink.gif)
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
![Wink ;-)](./images/smilies/wink.gif)
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
![Wink ;-)](./images/smilies/wink.gif)
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
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: SQL - wo anfangen
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.
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!!
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!!
-
- Rekursionen-Architekt
- Beiträge: 116
- Registriert: Do, 29. Mai 2008 20:46
- Hat sich bedankt: 1 Mal
Re: SQL - wo anfangen
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
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
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: SQL - wo anfangen
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 ...
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 ![d'oh! #-o](./images/smilies/eusa_doh.gif)
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![Very Happy :D](./images/smilies/biggrin.gif)
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()
...
![d'oh! #-o](./images/smilies/eusa_doh.gif)
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
![Very Happy :D](./images/smilies/biggrin.gif)
Gruß
Hubert
Hubert
-
- Rekursionen-Architekt
- Beiträge: 205
- Registriert: Mo, 07. Aug 2006 10:18
- Wohnort: Leipzig
- Danksagung erhalten: 11 Mal
Re: SQL - wo anfangen
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.
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
Sören