Wörter filtern beim Import?

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

„das Board“
****
Beiträge: 122
Registriert: Do, 28.02.2013 12:05

Wörter filtern beim Import?

Beitrag von „das Board“ »

Anderer Tread: viewtopic.php?f=2&t=61719

(Wie) ist es möglich in Base das ich alles aus einer CSV Datei importiere ausser wenn 2 Wörter enthalten sind?
Ich würde das schon sehr dringend benötigen.
DANKE!
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Wörter filtern beim Import?

Beitrag von F3K Total »

Hi,
wie wäre es die Zeilen aus der .csv mit den entsprechenden Worten vor dem Import zu löschen?
Oder die gesamte Datei zu importieren und die entsprechenden Zeilen per Extras/SQL... mit einem SQL-Befehl ala

Code: Alles auswählen

Delete from "Tabelle1" where "Text" = 'Wort1' or "Text" = 'Wort2'
Gruß R
„das Board“
****
Beiträge: 122
Registriert: Do, 28.02.2013 12:05

Re: Wörter filtern beim Import?

Beitrag von „das Board“ »

Ich formuliere es einmal so ich kenne mich mit Base und SQL 0 aus und mir ist es egal wie es funktioniert nur wichtig ist das es funktioniert. :D
Ich frage mich nur wie ich das mache das ich diesen befehl nutzen kann?
Die CSV Datei befindet sich auf X:
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Wörter filtern beim Import?

Beitrag von F3K Total »

Nun, du importierst die .csv und führst den SQL Befehl, wie beschrieben, über Extras/SQL ... aus.
Natürlich must Du "Tabelle1" durch den Namen deiner Tabelle, "Text" durch den Namen der entsprechenden Spalte und 'Wort1' sowie 'Wort2' korrekt ersetzen.
Schau mal ins Base Handbuch (weiter unten) denn
das Board hat geschrieben:... ich kenne mich mit Base und SQL 0 aus ...
sind zwei sehr schlechte Voraussetzungen um mit dem Programm erfolgreich umzugehen.
Gruß R
Benutzeravatar
lorbass
********
Beiträge: 4116
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: Wörter filtern beim Import?

Beitrag von lorbass »

„das Board“ hat geschrieben:Ich frage mich nur wie ich das mache das ich diesen befehl nutzen kann?
Das Öffnen der csv-Datei als Datenbank in Base ist einfach. Ich hab dir dazu ein kleines „Bilderbuch“ zusammengestellt (s.u.). Das sollte ohne weitere Worte für sich sprechen und dich bis zu der Stelle lotsen, an der du beliebige SQL-Kommandos absetzen kannst.

Leider wird dich das – jedenfalls so ohne Weiteres – noch nicht glücklich machen, da Base sich aus nachvollziehbaren Gründen weigert, Sätze aus einer solchen csv-Datenbank zu löschen. Das wusste ich bis dato auch nicht. Riks DELETE … funktioniert hier jedenfalls nicht.

Da ich mit Base nur eingeschränkte Erfahrung habe, wie ich bereits in dem Thread viewtopic.php?f=2&t=61719 angemerkt habe, bin ich an der Stelle mit der Frage aufgeschmissen, wie man mit Base weiterkommt, ohne die csv-Daten zur weiteren Verarbeitung in eine HSQL- oder MySQL-Datenbank zu übernehmen. Ob das überhaupt sinnvoll wäre, wage ich zu bezweifeln. Es geht ja nur darum ein paar hundert Datensätze aus 1,2 Mio. herauszufischen. – Gefragt sind hier also erstmal Base-Insider.

Ich will dich hier aber nochmal auf die Alternativen aufmerksam machen, die ich dir schon in dem Thread viewtopic.php?f=2&t=61719 genannt habe: Die absolut einfachste Methode: Nutzung eines geeigneten Texteditors wie z.B. Notepad++; alternativ: Einsatz einer Skript-Lösung (Perl, Python, …), eventuell als Filter unmittelbar an der Datenquelle. Dagegen ist Calc angesichts des Mengengerüsts von 1,2 Mio. Datensätzen ausgeschieden, da es nur max. 1.048.576 Datensätze aufnehmen kann.

Gruß
lorbass
 
Dateianhänge
Inbetriebname einer CSV-Datenbank mit Base.odt
(373.98 KiB) 192-mal heruntergeladen
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Wörter filtern beim Import?

Beitrag von F3K Total »

Hallo lorbass,
lorbass hat geschrieben: Riks DELETE … funktioniert hier jedenfalls nicht.
... da hast Du mich missverstanden, denn ich habe ja geschrieben
F3K Total hat geschrieben:Nun, du importierst die .csv und führst den SQL Befehl, wie beschrieben, über Extras/SQL ... aus.
Mit Importieren meine ich, dass die Daten in eine leere .odb eingelesen werden, sich danach innerhalb der eingebetteten HSQL-DB befinden.
  • Dies geht über zwei Wege:
    1. .csv in Calc öffnen, Tabellenreiter in den Tabellenbereich einer leeren Base-Datei ziehen, der Importdialog folgt, Datentypen vergeben ... Primary Key nicht anlegen
    2. .csv mit einer Base Datei als Text-DB verknüpfen, zweite leere Base-Datei öffnen, die Tabelle aus der verknüpften Datei in die zweite ziehen, der Importdialog folgt, Datentypen vergeben ... Primary Key nicht anlegen
  • Um z.B. die erste Spalte ID als Primary Key Autowert umzuformatieren, einmalig diese SQL-Befehle durchführen:

    Code: Alles auswählen

    alter Table "Adressen" alter column "ID"  INTEGER;
    alter Table "Adressen" alter column "ID"  set NOT NULL;
    alter Table "Adressen" ADD PRIMARY KEY ("ID");
    alter Table "Adressen" alter column "ID" INTEGER GENERATED BY DEFAULT AS IDENTITY
  • Ansicht/Tabellen aktualisieren
Dann funktionieren natürlich auch die SQL-Delete Befehle.
z.B.:

Code: Alles auswählen

Delete from "Adressen" where "Country" = 'Saudi Arabia' or "Country" = 'Gibraltar'
führt im Beispiel anbei zum Löschen von sechs Zeilen.

Gruß R
Dateianhänge
Adressen.zip
enthält eine .csv-Datei und eine .odb-Datei in die die .csv importiert wurde.
(54.46 KiB) 232-mal heruntergeladen
Benutzeravatar
lorbass
********
Beiträge: 4116
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: Wörter filtern beim Import?

Beitrag von lorbass »

F3K Total hat geschrieben:... da hast Du mich missverstanden
Ich hab dich schon richtig verstanden, mich offenbar aber falsch ausgedrückt. Ich wollte zum Ausdruck bringen, dass „dein“ DELETE in meinem „Bilderbuch-Vorgehen“ ;) nicht funktioniert. Sorry für die Aufregung.

Gruß
lorbass
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Wörter filtern beim Import?

Beitrag von F3K Total »

Hallo lorbass,
lorbass hat geschrieben:Riks DELETE … funktioniert hier jedenfalls nicht.
wer lesen kann ist klar im Vorteil, du hast es ja geschrieben.
Egal, jetzt gibts hier also eine weitere Anleitung.

Gruß Rik
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Wörter filtern beim Import?

Beitrag von F3K Total »

... und jetzt kommt der Hammer:
Es ist möglich eine Text-Datei (z.b. .csv) als Datenquelle in eine .odb Datei mit eingebetteter HSQL-DB einzubinden und dann genau wie eine interne Tabelle mit SQL zu bearbeiten.
In einer leeren .odb im selben Ordner wie angehängte Beispieldatei folgende SQL Befehle ausführen:

Code: Alles auswählen

CREATE TEXT TABLE "Adressen" ("ID" INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY,"Name" VARCHAR(255),"Surname" VARCHAR(255),"Date of Birth" DATE,"Phone" VARCHAR(255),"Email" VARCHAR(255),"Street Address" VARCHAR(255),"City" VARCHAR(255),"Postal" VARCHAR(255),"Country" VARCHAR(255));
SET TABLE "Adressen" SOURCE "/Adressen.csv;fs=\t;ignore_first=true;encoding=UTF-8"
SQL.png
SQL.png (29.11 KiB) 6159 mal betrachtet
wurde der Befehl erfolgreich ausgeführt, sieht man, nach einem Absicht/Tabellen aktualisieren, dies:
Table.png
Table.png (37.87 KiB) 6159 mal betrachtet
Die .csv muss wie im zweiten SQL-Befehl beschrieben, UTF-8 kodiert sein, als Feldtrenner einen Tabulator (\t) und das Datum im Format 2013-05-07 haben, dann klappt es. Sicherlich kann man es auch schaffen, den SQL-befehl so anzupassen, dass er auf eine beliebige vorliegende Datei passt.

Wenn man es einmal raus hat, ist dies sicherlich die beste Methode auf eine .csv mit Lese und Schreibrecht, Autowert usw. zuzugreifen.

Gruß R
Dateianhänge
Adressen.zip
enthält eine .csv
(7.25 KiB) 178-mal heruntergeladen
„das Board“
****
Beiträge: 122
Registriert: Do, 28.02.2013 12:05

Re: Wörter filtern beim Import?

Beitrag von „das Board“ »

Kannst du mir bitte erklären was ich da wie ändern muss das es bei mir geht?
Ich habe 4 Spalten:
Name, Hotel, Rate, Preis, Value
als Feldtrenner einen Tabulator
Wieso darf es kein "," sein?
Die absolut einfachste Methode: Nutzung eines geeigneten Texteditors wie z.B. Notepad++
Ja das problem ist wie machen ich es dort?
Ich habe es geschafft dort die überschüssigen sachen zu ersetzen und so aus 170MB nur mehr 110MB zu machen. 8)
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Wörter filtern beim Import?

Beitrag von F3K Total »

„das Board“ hat geschrieben: Kannst du mir bitte erklären was ich da wie ändern muss das es bei mir geht?
Das ist nicht so leicht, stelle hier eine kleine Beispieldatei ein, im leeren Raum geht es nicht.
„das Board“ hat geschrieben:Wieso darf es kein "," sein?
F3k Total hat geschrieben:Sicherlich kann man es auch schaffen, den SQL-Befehl so anzupassen, dass er auf eine beliebige vorliegende Datei passt.
Wie es mit einem Komma geht, habe ich noch nicht herausgefunden, für ein Semikolon soll dies funktionieren. durch

Code: Alles auswählen

\semi
ersetzen.


Gruß R
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Wörter filtern beim Import?

Beitrag von DPunch »

Servus
F3K Total hat geschrieben:Wie es mit einem Komma geht, habe ich noch nicht herausgefunden
HSQLDB: Text Tables
The default field separator is a comma (,). A different field separator can be specified within the SET TABLE SOURCE statement.
„das Board“
****
Beiträge: 122
Registriert: Do, 28.02.2013 12:05

Re: Wörter filtern beim Import?

Beitrag von „das Board“ »

Code: Alles auswählen

"Hotel Name","Brand","Beste Verfügbarkeit - Ab","123EUR","IEAAA"
"#EANF#","#EANF#","#EANF#","#EANF#","IEAAA"
"#EANF#","#EANF#","#EANF#","#EANF#","IEAAA"
"#EANF#","#EANF#","#EANF#","#EANF#","IEAAA"
"#EANF#","#EANF#","#EANF#","#EANF#","IEAAA"
"#EANF#","#EANF#","#EANF#","#EANF#","IEAAA"
"#EANF#","#EANF#","#EANF#","#EANF#","IEAAA"
"#EANF#","#EANF#","#EANF#","#EANF#","IEAAA"
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: Wörter filtern beim Import?

Beitrag von juetho »

Was soll denn das bedeuten:
„das Board“ hat geschrieben:

Code: Alles auswählen

"Hotel Name","Brand","Beste Verfügbarkeit - Ab","123EUR","IEAAA"
"#EANF#","#EANF#","#EANF#","#EANF#","IEAAA"
Ein Auszug aus deiner csv-Datei ohne jede Erläuterung, wozu "#EANF#" vorgesehen ist? Soll das ein Ersatz für die folgende Bitte sein?
F3K Total hat geschrieben:Das ist nicht so leicht, stelle hier eine kleine Beispieldatei ein, im leeren Raum geht es nicht.
Was als Beispieldatei zu verstehen ist, steht unter Allgemeine Hinweise zur Forumsbenutzung. In seinem Beitrag von gestern hat F3K gezeigt, wie eine csv-Datei mit einer odb-Datei hochgeladen wird.

Du bekommst hier so viele Informationen vorgekaut. Da ist dir zuzumuten, dem nachzugehen und (nur) mit konkreten Nachfragen zu kommen. Jürgen

PS. Ich werde mal darüber nachdenken, wie man das csv-Problem ins Base-Handbuch einbauen kann. Es scheint mir ein Fall für "Datenbank-Anbindung" zu sein.
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
„das Board“
****
Beiträge: 122
Registriert: Do, 28.02.2013 12:05

Re: Wörter filtern beim Import?

Beitrag von „das Board“ »

Ein Auszug aus deiner csv-Datei ohne jede Erläuterung, wozu "#EANF#" vorgesehen ist?
Das ist eben ein auszug aus der CSV Datei. Und "#EANF#" bedeutet das nichts extrahiert werden konnte -> zeile löschen
Antworten