Gedag iedereen,

Ik heb een .txt bestand ter grootte van 2000 regels waarin op iedere regel een term en zijn definitie staat beschreven. Tussen de term en de definitie zit een tab.

Nu moet ik dit allemaal in een MySql tabel inserten, maar ik heb geen idee hoe.

Via Import (bij phpMyAdmin) zag ik dat er een mogelijkheid is om csv bestanden te importeren, maar laat dit bestand nou net een .txt bestand zijn waarin op iedere regel de term en de definitie is gescheiden met een tab...

Iemand die me een tip kan geven?
Er zijn meerdere manieren om dit te doen. (uit programmeer-perspectief) In elk geval lijkt het me logisch dat je het bestand regel per regel inleest. Elke regel bestaat uit een term en een definitie. Het lijkt me dat je de in de database elke term met zijn bijhorende definitie wenst op te slaan. Je moet dus ook bepalen wat de term is en wat de definitie.

Ik heb even stukje code geschreven, dat volgens mij de meest eenvoudige methode weergeeft.


<?php
/* Inhoud bestand inlezen */
$aFile = file('test.txt');

/* Inhoud bestand regel per regel uitlezen */
foreach($aFile as $sLine) {
    /* Splitsen op tab [\t] */
    $aTab = explode("\t", $sLine);

    /* Output */
    echo '<strong>Term: </strong>' . $aTab[0] . '<br />';
    echo '<strong>Definitie </strong>' . $aTab[1] . '<br /><br />';
}
?>


Wat je eigenlijk dient te doen is het gedeelte met de output te veranderen. Daar moet je een insert-query zetten. Iets als INSERT INTO tabel (term, definitie) VALUES ($term, $definitie).

Wanneer het over grote bestanden gaat, kan het wel even duren vooraleer het is ingelezen. 2000 regels in de database stoppen kan ook even duren, maar dat zou op zich geen probleem mogen vormen.
Inlezen met [php]file[/php](), dan met een foreach() het array() doorlopen en met [php]explode[/php]() de data scheiden om het vervolgens in de database te zetten.
Oke, dus even voor de duidelijkheid, de boel inserten zal ik dus via een php bestand moeten doen en niet via phpmyadmin?

Ik heb daarnaast nog twee andere bestanden waarvan ik het aantal regels niet precies weet, de eerste is 600kB en de andere is 1.3mB...

Kunnen deze ook probleemloos uitgelezen worden via dat php bestand? Niet dat ik met een time-out of iets dergelijks te maken krijg...
Dat ligt aan diverse factoren. Ik zou het gewoon proberen.
Wat je altijd voor de zekerheid kan doen is het bestand opsplitsen. In dit geval is dat vrij eenvoudig hé. Normaal gezien is voor PHP een bestand van 600KB of 1,3MB geen enkel probleem. Het kan echter wel zo zijn dat de shared webhostingserver waarop jij zit beperkt is. Bijvoorbeeld zeer weinig RAM-geheugen per website. Daardoor zou het kunnen mislopen. Wat ook mogelijk is, is dat je host een database-servers die eigenlijk door te veel gebruikers wordt benut. Maar laten we er vanuit gaan dat de gemiddelde host alles netjes in orde heeft, en dat jij dit gewoon zonder probleem kan uitvoeren.

Reageren