Daten im Stapel übernehmen ohne Duplikate

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

tunix_xl
**
Beiträge: 41
Registriert: Di, 27.11.2007 17:09

Daten im Stapel übernehmen ohne Duplikate

Beitrag von tunix_xl »

Tach Forum

Aus einer Datenbank sollen monatlich Sätze, die ein Kriterium erfüllen (Verfalldatum), gelöscht werden.
(wohl das kleinere Problem)

Es sollen neue Sätze, die noch nicht in der DB vorhanden sind, aus einer Tabelle aufgenommen werden (gemeinsames Kriterium z.B. Artikelnr.)
In der Tabelle kommen aber beide Fälle vor: bereits in der Datenbank gelistete Artikel, sowie auch neue.

Erster Ansatz:
Tabelle in die Datenbank importieren, anschließend Duplikate entfernen und dann mit "Datenbank reparieren" die Abhängikeiten neu aufbauen. Nicht sehr elegant und einem Noob-Hirn entsprungen... :shock:

Bestimmt gibts bessere Ansätze (erwarte keine fertige Lösung - für hilfreiche Tips oder "grobe Wegbeschreibung"
wäre ich aber sehr dankbar.)

Zum Umfang:

Datenbank: ca 30 000 - 40 000 Sätze
"Tabelle2" etwa gleich groß
In der DB noch nicht vorhanden: einige duzend bis einige tausend ...

LG
t
Toshiba Satelite L20 ubuntu 09.04 / 32bit / ooffice3.1 / LAMP
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Daten im Stapel übernehmen ohne Duplikate

Beitrag von komma4 »

Du nimmst HSQLDB (interne DB)?
Wie führst Du SQL-Anweisungen aus (Extras>SQL oder Makro)?

Soll das Verfalldatum eingegeben oder automatisch berechnet werden?


Sollen die Datensätze vorhandener ArtikelNummern aktualisiert werden?

Aus welcher Tabelle kommen die neuen Daten: Base oder Calc-Tabelle?

Tipp: Das Setzen eines "EINDEUTIG"-Index auf eine Spalte verhindert ein Einfügen von doppelten Werten.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
tunix_xl
**
Beiträge: 41
Registriert: Di, 27.11.2007 17:09

Re: Daten im Stapel übernehmen ohne Duplikate

Beitrag von tunix_xl »

Hallo 'Winfried,
Danke fürs feedback vorweg.

Bislang mache ich alles noch mit calc. Da mir aber von verschiedenen Seiten gesagt wird, dass eine Datenbank besser für diese Aufgabe geeignet ist, will ich mich da reinarbeiten und es versuchen ( bin kein Profi).
Die ersten Schritte mach ich gerade mit mysql und phpmyadmin.
Am Ende sollen aber idealerweise die sqlstrings in makros übergeben werden
Soll das Verfalldatum eingegeben oder automatisch berechnet werden?
Verfalldatum ist fix und steht in der Tabelle, aus der die "neuen" in die DB übernommen werden.
Sollen die Datensätze vorhandener ArtikelNummern aktualisiert werden?
Ja. Es gibt Ein- und Verkaufspreise, die täglich aktualisiert werden. Diese Preise können nicht intern berechnet werden - sie werden aus dem Netz geladen.
Aus welcher Tabelle kommen die neuen Daten: Base oder Calc-Tabelle?
Wenn ich das hinbekomme, soll am Ende alles "aus einem Guß" unter Base und mit Makros so weit wie möglich automatisiert laufen. Steh da aber wie gesagt ganz, ganz am Anfang.

Bisher läuft alles noch unter Calc.

Kurze Ablaufbeschreibung:
Täglich:
Makro lädt in Paketen a 200 Sätze die aktuellen Preise und fügt diese Pakete zu einer Tabelle zusammen.
Makro kopiert die Spalten Preise in die Mastertabelle.
Makro berechnet Werte in Mastertabelle neu und filtert nach bestimmten Kriterien.
Makro schreibt die "handvoll" Treffer, die gerade besonders günstig sind in separate Trefferliste.

Monatlich: (mach ich zur Zeit noch "händisch")
Neue Artikel aus dem Netz zusammensuchen und in die Mastertabelle aufnehmen.
Alte mit abgelaufenem Verfalldatum löschen
Das Setzen eines "EINDEUTIG"-Index auf eine Spalte verhindert ein Einfügen von doppelten Werten.
Mit dem: INSERT INTO ... SELECT DISTINCT Befehl bin ich heute schonmal einen Schritt weiter gekommen. Danke

LG
t
Toshiba Satelite L20 ubuntu 09.04 / 32bit / ooffice3.1 / LAMP
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Daten im Stapel übernehmen ohne Duplikate

Beitrag von komma4 »

Mit MySQL bist Du doch gut versorgt.

Durch LOAD DATA INFILE bekommst Du jedes 200-Satz-Paket direkt in eine Tabelle (die Anweisung hat einen REPLACE-Schalter!)

Die Berechnungen und das Übertragen könnte doch auch mit SQL erledigt werden? Willst Du die Makros für Base neu schreiben?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
tunix_xl
**
Beiträge: 41
Registriert: Di, 27.11.2007 17:09

Re: Daten im Stapel übernehmen ohne Duplikate

Beitrag von tunix_xl »

@komma 4

vielen dank für die Anregungen.
Die Berechnungen und das Übertragen könnte doch auch mit SQL erledigt werden? Willst Du die Makros für Base neu schreiben?
Ja - sollte gehn. Und wenn ich mir die Makros ersparen kann, fein. Dazu muß ich aber wohl richtig einsteigen und mir erstmal die sql-Syntax antun (gegenwärtig kämpf ich da auf dem Niveau: "nehm ich jetzt die einfachen Hochkommas oder doch lieber doppelte Anführungszeichen oder lass ich beides weg...").

Also erstmal RTFM's - aber ich bleib am Ball ... :)

lg
t
Toshiba Satelite L20 ubuntu 09.04 / 32bit / ooffice3.1 / LAMP
tunix_xl
**
Beiträge: 41
Registriert: Di, 27.11.2007 17:09

Re: Daten im Stapel übernehmen ohne Duplikate

Beitrag von tunix_xl »

komma4 hat geschrieben:Mit MySQL bist Du doch gut versorgt.

Durch LOAD DATA INFILE bekommst Du jedes 200-Satz-Paket direkt in eine Tabelle (die Anweisung hat einen REPLACE-Schalter!)
moins,

... an der letzten Hürde gescheitert?

Die oben beschriebene DB tut jetzt (fast) alles was sie soll. Nur bei der Datenübernahme aus dem web komm ich nicht weiter.

Code: Alles auswählen

LOAD DATA LOCAL INFILE 'http:///www.hierstehtdieganzeurl' INTO TABLE col2tab.rein FIELDS TERMINATED BY ',' ENCLOSED BY '"';
gibt die Fehlermeldung:
#2 - File 'http:/www.hierstehtdieganzeurl' not found (Errcode: 2)

perror sagt:
OS error code 2: No such file or directory

In oo-calc klappt es mit dieser url.

Was mach ich bei der Übergabe der URL als String falsch?

lg
t
Toshiba Satelite L20 ubuntu 09.04 / 32bit / ooffice3.1 / LAMP
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Daten im Stapel übernehmen ohne Duplikate

Beitrag von komma4 »

tunix_xl hat geschrieben:die Fehlermeldung:
#2 - File 'http:/www.hierstehtdieganzeurl' not found (Errcode: 2)
wie es dei Meldung sagt: "/www.irgendwas" nicht gefunden

Du hast ein slash zuviel: http://

War es das?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
tunix_xl
**
Beiträge: 41
Registriert: Di, 27.11.2007 17:09

Re: Daten im Stapel übernehmen ohne Duplikate

Beitrag von tunix_xl »

nein - leider nicht

kann das was mit der Einstellung "localhost" zu tun haben?

so sieht die Adresszeile von phpadmin im Browser aus:

http://localhost/phpmyadmin/index.php?d ... -8&target=,,,

(hab sie hier nach 'target' abgeschnitten)

gruß
t
Toshiba Satelite L20 ubuntu 09.04 / 32bit / ooffice3.1 / LAMP
tunix_xl
**
Beiträge: 41
Registriert: Di, 27.11.2007 17:09

Re: Daten im Stapel übernehmen ohne Duplikate

Beitrag von tunix_xl »

hi,
hab jetzt mal als Versuch was hochgeladen, und versucht, dieses mit

Code: Alles auswählen

LOAD DATA LOCAL INFILE 'http://freenet-homepage.de/tunix_xl/artikel/quotes.csv' INTO TABLE col2tab.yahoo FIELDS TERMINATED BY ',' ENCLOSED BY '"';
in die DB zu kriegen.
krieg ich diese Meldung:
fehler.png
fehler.png (8.82 KiB) 2403 mal betrachtet
Im Browser aufgerufen tut der Link.

Was kann ich noch versuchen?

lg
t
Toshiba Satelite L20 ubuntu 09.04 / 32bit / ooffice3.1 / LAMP
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Daten im Stapel übernehmen ohne Duplikate

Beitrag von komma4 »

... ich bin nicht sicher, ob die Angabe LOCAL richtig ist.....

http://dev.mysql.com/doc/refman/5.0/en/load-data.html
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
tunix_xl
**
Beiträge: 41
Registriert: Di, 27.11.2007 17:09

Re: Daten im Stapel übernehmen ohne Duplikate

Beitrag von tunix_xl »

@ komma4

Danke für den Link. Durch diese Gebrauchsanweisung wurschtel ich mich schon seit Tagen durch (auch wenn sie häufig mehr zur Verwirrung denn zur Erleuchtung beiträgt...)

Wenn ich das LOCAL weglasse wird die Datei lediglich im Verzeichnis des Servers auf der Festplatte gesucht:
mysql.png
mysql.png (9.2 KiB) 2416 mal betrachtet
Toshiba Satelite L20 ubuntu 09.04 / 32bit / ooffice3.1 / LAMP
tunix_xl
**
Beiträge: 41
Registriert: Di, 27.11.2007 17:09

Re: Daten im Stapel übernehmen ohne Duplikate

Beitrag von tunix_xl »

Hi,
eben erhielt ich die Info, daß man mit dem Befehl LOAD DATA INFILE (mysql) grundsätzlich nicht auf externe DatenIFiles zugreifen kann. Mysql importiert Files nur, wenn sie im Verzeichnis des Clients (mit LOCAL) oder im Verzeichnis des Servers (ohne LOCAL) liegen.

Kann mir dies bitte jemand bestätigen?

lg
t
Toshiba Satelite L20 ubuntu 09.04 / 32bit / ooffice3.1 / LAMP
tunix_xl
**
Beiträge: 41
Registriert: Di, 27.11.2007 17:09

Re: Daten im Stapel übernehmen ohne Duplikate

Beitrag von tunix_xl »

Am Ende eine Mischung:
Datendownload wie gehabt mittels calc.
Datenbank mysql mit Shellskripten bearbeiten.
Mit phpmyadmin als Frontend auswerten.
Läuft stabil und trotz Umwegen (Calc) schneller und letztlich komfortabler.

Nochmal mein Dankeschön ans Forum und speziell an komma4 für sein schubsen in die "richtige" Richtung :D
Toshiba Satelite L20 ubuntu 09.04 / 32bit / ooffice3.1 / LAMP
Antworten