Tekstbestanden en OpenOffice-base

Bespreek het databaseprogramma
RPG
Berichten: 4667
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Tekstbestanden en OpenOffice-base

Bericht door RPG »

Vanwege bepaalde redenen heb ik belangstelling gekregen voor tekstbestanden. Het is ook belangrijk deze tekstbestanden af te grenzen tot een bepaald bereik: namelijk die tekstbestanden die aangeduidt worden als CSV-bestanden.

CSV bestanden
In het algemeen wordt als hier scheidingsteken hiervoor de komma gebruikt maar het kan soms beter zijn om een ander scheidingsteken te gebruiken: bijvoorbeeld de punt-komma. Wanneer we kiezen voor een punt-komma als scheidingsteken komen we niet in problemen met getallen waar soms de komma of de punt gebruikt wordt voor het aangeven van decimale waarden of duizendtallen. Dit alles wordt in meer detail uitgelegd in Kommagescheiden bestand - Wikipedia.

Welk programma gebruiken
De keuze welk programma het beste is wordt bepaald door de gebruiker en door de omstandigheden die er zijn. Wel is het misschien aan te raden om niet zelf te gaan programmeren maar dat programma te gebruiken wat al beschikbaar is. Aangezien dit geschreven is voor een ApacheOffice en LibreOffice is het misschien verstandig om gebruik te maken van wat deze Office programma's bieden. Eventueel kan gekozen worden voor het programma CSVED.

OpenOffice-calc
OpenOffice calc biedt de mogelijkheid om bestanden op te slaan als een CSV. Let wel alleen het huidige tabblad wordt opgeslagen dus sla het op met een andere naam anders raak je de gegevens kwijt. Het is altijd belangrijk om meerdere kopieën te hebben van bestanden speciaal wanneer iets gedaan wordt wat weinig tot nooit eerder gedaan is.

OpenOffice-base voor tekstbestanden
OpenOffice-base is in staat tekstbestanden te lezen als een platte database maar kan deze niet bewerken maar wel lezen en filteren.

OpenOffice-base voor platte tabellen
OpenOffice-base heeft voor platte tabellen een beperkte instructieset waarmee op velden enige bewerkingen gedaan kunnen worden:
SQL functions for file based database drivers.

Tekstbestanden in combinatie met Database programma's
HSQLDB kent de mogelijkheid om met tekstbestanden om te gaan. Werken met tekstbestanden kan niet alleen met HSQLDB maar waarschijnlijk wel met alle bekende database programma's. Deze manier van werken kan voor beginners weleens moeilijker zijn dat de hiervoor opgesomde methodes maar in HSQLDB worden op deze alle mogelijkheden geboden die normale tabellen ook hebben. Voor zover ik weet verschild de werkwijze niet voor de oude versie HSQLDB1.8.10 die bij genoemde OpenOffice versies behoren en tussen de nieuwe versie HSQLDB 2.0 en hoger.

Voorwaarden Bij HSQLDB
Het tekstbestand moet zich bevinden in of aangemaakt worden in de zelfde map of een bestaande sub-map hiervan als waarin de database zelf staat. Ik denk dat dit te maken heeft met veiligheid. Database programma's worden vaak door bedrijven gebruikt en daar is het erg belangrijk dat onbevoegden geen toegang tot deze gegevens kunnen krijgen.

Stap 1
Er moet een tabel gemaakt worden waarbij velden en andere noodzakelijk zaken gedefinieerd worden. Speciaal is dat hierbij een tabel is die speciaal geschikt is voor een tekst bestand.

Stap 2
In deze stap wordt de verbinding gelegd tussen de gedefinieerde tabel in stap 1 en de CSV-tekstbestand. Voor de CSV-tekstbestand wordt een naam gebruik die relatief is ten opzichte van de map waar de database zelf is. In de zelfde opdracht worden nog enkele zaken geregeld zoals de FS=scheidingsteken voor velden. Voor zover ik weet is het niet noodzakelijk dat het bestand bestaat, het wordt zo nodig aan gemaakt wanneer het niet bestaat. De submap moet wel bestaan.

Stap 3
Is het feitelijk verbinden van bovengenoemde tabel en bestand. Wanneer de verbinding actief is kan er met het bestand gewerkt worden.

Stap 4
Wanneer de o[drachten gereed zijn kan de verbinding opgeheven worden.

Voorbeeld van Villeroy
Villeroy heeft op het Engelse forum een mooi voorbeeld geplaatst over hoe het in praktijk gebruikt kan worden: Import rows into sheet 1 only where there is a value... (View topic) • Apache OpenOffice Community Forum. Het maakt mooi duidelijk dat kennis hebben van de mogelijkheden van OpenOffice het werkt vergemakkelijken.

Dit alles wordt beschreven in het help bestand: Chapter 5. Text Tables. Voorzover ik weet werkt in HSQLDB 1.8.10 en HSQLDB 2.x het zelfde.

Hieronder staan de bijbehorende opdrachten die ik gebruikt heb voor een simpele proef.

Code: Selecteer alles

 -- Bij testen gebruik ik altijd de regel drop tabel "gewenste_naam" wanneer deze bestaat
drop  table "ProefNamen" if exists ;
CREATE TEXT TABLE  "ProefNamen"(
	"Voornaam" VARCHAR(20) ,
	"Achternaam" VARCHAR(45) ,
	primary key ( "Voornaam"  , "Achternaam" )
 )


--  Definieer de verbinding van een tabel naar het tekstbestand in een bestaande submap
-- De map moet bestaan en ik weet niet of het scheidingstekensteken voor mappen afhankelijk is van het OS
SET TABLE "ProefNamen" SOURCE "NamenMap/namen.csv;fs=\semi;ignore_first=true;all_quoted=false"
SET TABLE "ProefNamen" SOURCE ON ;

-Regel eventueel nog  veldnamen voor de tekst bestand
insert  into "ProefNamen" values  (  'Voornaam' , 'Achternaam') 

-- Verbreekt een verbinding tussen een tabel en het bijbehorende tekstbestand
SET TABLE "ProefNamen" SOURCE OFF ; 

-- Maakt een verbinding tussen een tabel en het bijbehorende tekstbestand
SET TABLE "ProefNamen" SOURCE ON ;
LibreOffice 7.4.3.2 op openSUSE Leap 15.4