Seite 1 von 2
Wörter filtern beim Import?
Verfasst: Mo, 06.05.2013 19:59
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!
Re: Wörter filtern beim Import?
Verfasst: Mo, 06.05.2013 22:21
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
Re: Wörter filtern beim Import?
Verfasst: Mo, 06.05.2013 22:25
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.
Ich frage mich nur wie ich das mache das ich diesen befehl nutzen kann?
Die CSV Datei befindet sich auf X:
Re: Wörter filtern beim Import?
Verfasst: Mo, 06.05.2013 22:30
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
Re: Wörter filtern beim Import?
Verfasst: Di, 07.05.2013 19:17
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
Re: Wörter filtern beim Import?
Verfasst: Di, 07.05.2013 20:27
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:
- .csv in Calc öffnen, Tabellenreiter in den Tabellenbereich einer leeren Base-Datei ziehen, der Importdialog folgt, Datentypen vergeben ... Primary Key nicht anlegen
- .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
Re: Wörter filtern beim Import?
Verfasst: Di, 07.05.2013 21:50
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
Re: Wörter filtern beim Import?
Verfasst: Di, 07.05.2013 22:36
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
Re: Wörter filtern beim Import?
Verfasst: Di, 07.05.2013 23:12
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 (29.11 KiB) 6151 mal betrachtet
wurde der Befehl erfolgreich ausgeführt, sieht man, nach einem Absicht/Tabellen aktualisieren, dies:

- Table.png (37.87 KiB) 6151 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
Re: Wörter filtern beim Import?
Verfasst: Mi, 08.05.2013 00:14
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.

Re: Wörter filtern beim Import?
Verfasst: Mi, 08.05.2013 05:58
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
ersetzen.
Gruß R
Re: Wörter filtern beim Import?
Verfasst: Mi, 08.05.2013 07:15
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.
Re: Wörter filtern beim Import?
Verfasst: Mi, 08.05.2013 08:05
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"
Re: Wörter filtern beim Import?
Verfasst: Mi, 08.05.2013 08:59
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.
Re: Wörter filtern beim Import?
Verfasst: Mi, 08.05.2013 09:31
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