BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!
> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Texte importieren
Texte importieren
Ich habe ca. 5000 Textdateien. Deren Inhalte möchte ich in eine Tabelle einer Datenbank importieren. Kann man das in einem Rutsch machen?
mit beträchtlichem Gruß
opensuse 15.2 - NAS
opensuse 15.2 - NAS
Re: Texte importieren
klar, da Du eine Suse laufen hast würde ich das - je nach Struktur der Dateien - zuerst auf Betriebssystemebene machen. Ich nehme mal an, dass Deine Dateien alle "gleich" aussehen ... sonst wird's kompliziert
Am Allereinfachsten:
Textdatei in ein csv-Format bringen und alle Dateien in eine große Datei schreiben, dann die csv-Datei als Tabelle in Base einbinden - basta
... oder so ähnlich
Am Allereinfachsten:
Textdatei in ein csv-Format bringen und alle Dateien in eine große Datei schreiben, dann die csv-Datei als Tabelle in Base einbinden - basta
Code: Alles auswählen
cd /Pfad/zu/Meinen/Dateien
cat *.txt > /home/ich/alle_daten.csv
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
Re: Texte importieren
Geht leider nicht. Die Texte sind alle verschieden. Es sind kurze Inhaltsangaben. Das csv-Format macht hinter jedem Wort einen Zeilenumbruch.
mit beträchtlichem Gruß
opensuse 15.2 - NAS
opensuse 15.2 - NAS
Re: Texte importieren
1 Datei = 1 Datensatz?
wie sind die Dateien strukturiert?
gibt es ein Muster, nach dem ein Makro erkennen kann, was wo steht?
wie sind die Dateien strukturiert?
gibt es ein Muster, nach dem ein Makro erkennen kann, was wo steht?
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
Re: Texte importieren
Ich habe hier 2 Beispiele hochgeladen:
Einmal den Tabellenentwurf,
zum Anderen einen Beispieltext.
Wenn man Die Informationen im Text wie "Autor", "Regie" oder "Komponist" noch in ein separates Feld einer Tabelle bekäme, wäre es noch schöner. Die Beziehungen der Tabelle zu einer Anderen werden über den Namen der Textdatei hergestellt.
Einmal den Tabellenentwurf,
zum Anderen einen Beispieltext.
Wenn man Die Informationen im Text wie "Autor", "Regie" oder "Komponist" noch in ein separates Feld einer Tabelle bekäme, wäre es noch schöner. Die Beziehungen der Tabelle zu einer Anderen werden über den Namen der Textdatei hergestellt.
- Dateianhänge
-
- Beispieltext.png (133.22 KiB) 1369 mal betrachtet
-
- Tabellenentwurf.png (30.66 KiB) 1369 mal betrachtet
mit beträchtlichem Gruß
opensuse 15.2 - NAS
opensuse 15.2 - NAS
Re: Texte importieren
etwa so ... logischerweise ungetestet und vermutlich kommen dutzende Fehlermeldungen ... aber da musst Du durch
Code: Alles auswählen
sub import_viele_dateien
dim sDatei
sDatei=DIR("/home/freitag/Daten/*",0)
while sDatei <> ""
if sDatei <> "." and sDatei <> ".." then
aDatensatz = DateiLesen("/home/freitag/Daten/" & sDatei)
' aDatensatz enthält ein Array nach folgendem Muster:
' (0) = Titel
' (1) = Autoren
' (2) = Prduktion
' (3) = Regie
' (4) = Musik
' (5) = Inhalt als ggf. mehrzeiliger Text
' (6) = Mitwirkende als direkt SQL-taugliches Statement: Insert into tMitwirkende (ID_Mitwirkende, Werk, Kuenstler, Rolle) values (NULL, 'WerkXYZ', 'Künstler1', 'Rolle1') (NULL, 'Filmname', 'Künstler2', 'Rolle2') (NULL, 'Filmname', 'Künstler3', 'Rolle3') etc.
' (7) = Daten des Werks in direkt SQL-tauglicher Form...
' das Array kann jetzt mit einer SQL-Anweisung eingelesen werden - vorzugswiese in 2 Tabellen: 1x Werk, 1x Mitwirkende .... oder wie auch immer
' besser: einfach die 2 Statements in (6) und (7) ausführen...
end if
sDatei=DIR
wend
end sub
function DateiLesen(Dateiname)
dim DS(7)
i = Freefile
sModus="###NEU###"
open Dateiname For Input As i
while NOT EOF(i)
line input #i, sLine
if sLine <>"" then
if isempty(DS(0)) then
DS(0)=sLine
else
if sModus="###NEU###" then
aL=split(sLine, CHR(9))
if aL(0) = "Autor(en):" then
DS(1) = aL(1)
elseif aL(0) = "Produktion:" then
DS(2) = aL(1)
elseif aL(0) = "Regisseur(e):" then
DS(3) = aL(1)
elseif aL(0) = "Komponist(en):" then
DS(4) = aL(1)
elseif aL(0) = "Mitwirkende:" then
sModus = "###MITWIRKENDE###"
'DS(6) = aL(1) - Zeile ohne Daten => wird verworfen
elseif aL(0) = "Inhaltsangabe:" then
sModus="###INHALT###"
DS(5) = aL(1)
elseif sModus = "###MITWIRKENDE###" then
DS(6) = DS(6) & " (NULL, '" & DS(0) & "', '" & split(sLine, CHR(9))(0) & "', '" & split(sLine, CHR(9))(1) & "') "
elseif sModus="###INHALT###" then
aL=split(sLine, CHR(9))
if len(aL) = 2 then
if aL(0) = "Mitwirkende:" then
sModus = "###MITWIRKENDE###"
else
msgbox(DS(1) & ": hier sollten Daten zum Inhalt oder zu den Mitwirkenden stehen! Bitte per Hand korrigieren. Die Problematische Zeile ist:" & chr(10) & sLine)
end if
else
DS(5) = DS(5) & chr(10) & aL(0)
end if
end if
end if
end if
end if
wend
close #i
DS(6) = "Insert into tMitwirkende (ID_Mitwirkende, Werk, Kuenstler, Rolle) values " & DS(6)
DS(7) = "Insert into tWerke (ID_Werke, Werk, Autor, Produktion, Regie, Musik, Inhalt) values (NULL, '" & DS(0) & "', '" & DS(1) & "', '" & DS(2) & "', '" & DS(3) & "', '" & DS(4) & "', '" & DS(5) & "')"
DateiLesen=DS
end function
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
An alle, die das LibreOffice-Forum nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
❤️ Vielen lieben Dank für Ihre Unterstützung ❤️