bestand importeren in database

Status
Niet open voor verdere reacties.

Stinuz

Terugkerende gebruiker
Lid geworden
14 jun 2003
Berichten
1.245
Hoihoi, ik begin een webwinkel en ik heb een bestand dat ik wil importeren in mijn mysql database met de volgende structuur:

A= Cat
B= Sub cat
C= Sub sub cat.
D= Referentie nummer
E= Merk
F= Naam
G= Omschrijving
H= prijs zonder eco belastingen e.a
I= Verzendkosten
J= Prijs
K= Foto
L= Status
M= Gewicht
N= Volume Gewicht

Nu heb ik een mysql database aangemaakt met de tabellen At/mN. De informatie in het bestand wordt gescheiden met een punt-comma, dus de waarden zitten er in als volgt:

A;B;C;D;E;F;G;H;I;J;K;L;M;N

Dit zou er bij een van de producten dus zo uitzien:

Code:
INFORMATICA;Scherm;20 - 23" scherm;PN100137;SAMSUNG;TFT 22" breedscherm SyncMaster 2243BW (5ms) + DVI mannetje / VGA vrouwtje CG-211E adapter + Tripolaire verlengende voedingskabel - 3 m - MC902-3M;De stijlvol ontworpen SyncMaster 2243BW monitor heeft de beste specificaties. Zo heeft de monitor een dynamische contrastverhouding van 8000 1, responstijd van 5ms, ergonomische en in hoogte verstelbare stander, MagicRotation waarmee staande beelden, zoals A4-formaat, kunnen worden weergegeven. Deze monitor ondersteunt veeleisende taken en ziet er ook nog eens goed uit.;154.59;12.90;154.59;[url]http://pan.fotovista.com/dev/5/5/03856755/t_03856755.jpg;op[/url] voorraad;7.812;8.330;

Hoe krijg ik al de producten in dit bestand opgeslagen nu dus geïmporteerd in de database? Dit zou met PHP moeten kunnen maar ik weet niet hoe :p:thumb:
 
Ik ook, maar het betreft hier een csv bestand. Niet mijn keuze, dit is me gegeven
 
In PhpMyadmin zit een functie voor het uploaden van csv bestanden, misschien kun je deze proberen?
 
Deze heb ik geprobeerd. Dit gaf in het begin wat problemen met "velden ontweken door" maar nadat ik dit veranderd had in "~', wat niet voorkomt in het bestand, deed ie het redelijk.

Maar er zitten een aantal regels in het bestand (een hele hoop, en er zijn meer dan 10.000 regels) die beginnen met ::: (dus 3 puntcomma's) en hier gaat phpmyadmin de fout in. Ik heb dus een programma of scriptje nodig waarmee ik alle regels in het bestand die beginnen met ::: kan verwijderen, want als ik dit handmatig moet doen ben ik volgende week nog niet klaar.

Iemand die hier een oplossing voor heeft? :thumb:
 
Deze heb ik geprobeerd. Dit gaf in het begin wat problemen met "velden ontweken door" maar nadat ik dit veranderd had in "~', wat niet voorkomt in het bestand, deed ie het redelijk.

Maar er zitten een aantal regels in het bestand (een hele hoop, en er zijn meer dan 10.000 regels) die beginnen met ::: (dus 3 puntcomma's) en hier gaat phpmyadmin de fout in. Ik heb dus een programma of scriptje nodig waarmee ik alle regels in het bestand die beginnen met ::: kan verwijderen, want als ik dit handmatig moet doen ben ik volgende week nog niet klaar.

Iemand die hier een oplossing voor heeft? :thumb:

Je kan het bestand toch openen met word(pad) of notepad++ en dan ctrl+h indrukken (zoek en vervang)?
 
Inderdaad, maar dan 'vervangt' hij alleen ";;;" en ik moet van de hele regel af, niet alleen dat stukje. ;)
 
notepad++ kan ook in uitgebreide modus of zelfs met regex werken ;)

maar terug naar het oorspronkelijke vraagstuk: elk regel moet een record in de database worden en elke regel bevat data voor alle 14 velden - met uitzondering van de regels die beginnen met ;;; correct?

Met file() kun je een bestand inlezen als array en met str_replace kun je eenvoudig de ; vervangen. Even quick and dirty (ik ga er hierbij vanuit dat het bronbestand wel netjes is elkaar zit, muv de ;;; regels):
PHP:
<?php
	$bron = file("data.csv");
	$data = array();
	foreach ($bron as $regel) {
		if (!preg_match("/^;;;(.*)$/",$regel)) {
			$data[] = "('".str_replace(";","','",trim($regel))."')";
		}
	}
	$query = "insert into blaat values ".implode(",",$data);
	mysql_connect('localhost', 'root', '') or die ("meh");
	mysql_select_db('test') or die ("mooh");
	mysql_query($query) or die ($query."<br />".mysql_error());
?>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan