🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 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) 2081 mal betrachtet
-
- Tabellenentwurf.png (30.66 KiB) 2081 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 gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.