Toon posts:

[MySQL] .txt in database opslaan *

Pagina: 1
Acties:

Verwijderd

Topicstarter
beste tweakers,

ik heb het volgende probleem. Ik moet een script maken die ervoor zorgt dat de inhoud van een tekstbestand(gegevens.txt) opgeslagen wordt in een mysql database.

Nu heb ik een database gemaakt in mysql met 4 velden. voornaam, achternaam, klas en plaats. Het volgende php script gebruik ik nu.

PHP:
1
2
3
4
5
6
7
<?php
mysql_connect('localhost');
mysql_select_db('gegevens');

$query = 'LOAD DATA LOCAL INFILE "gegevens.txt" INTO TABLE gegevens';
$result = mysql_query($query);
?>


Als ik die pagina nu benader met explorer laat die helemaal niks zien, alleen maar wit, das wel normaal dacht ik zo, alleen de gegevens komen niet in de database...

gegevens.txt ziet er als volgt uit:

Blaat Aap 3ia Almelo


Die gegevens moeten er in komen. Ik heb wel meerdere topics gezien waar het zelfde gevraagd wordt, ik wordt daar alleen niet veel wijzer van... Wie kan mij wel helpen?

Alvast bedankt

[ Voor 5% gewijzigd door Verwijderd op 29-01-2004 14:15 ]


  • Sosabowski
  • Registratie: Juni 2003
  • Laatst online: 18-04 11:49

Sosabowski

nerd

Als ik die pagina nu benader met explorer
Een PHP pagina in explorer. Right. Php moet je oproepen met een BROWSER.

Volgens mij moet er een scheidingsteken in het txt bestand staan zoals bv ,

ff zoeken, googlen enz...

edit:
offtopic:
@THEF_Pino Afbeeldingslocatie: http://gathering.tweakers.net/global/templates/got/images/icons/edit.gif :O

[ Voor 22% gewijzigd door Sosabowski op 29-01-2004 14:35 ]

The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell


  • Pino
  • Registratie: Oktober 2001
  • Laatst online: 20-04 11:08
Kijk eens even of er niets in je mysql_error staat.

"If you don't know where you are going, any road will take you there"


  • Pino
  • Registratie: Oktober 2001
  • Laatst online: 20-04 11:08
IorGie schreef op 29 januari 2004 @ 14:27:
[...]


Een PHP pagina in explorer. Right. Php moet je oproepen met een BROWSER.
Misschien bedoelt hij wel InternetExplorer, anders had hij geen lege witte pagina toch?

offtopic:
mie·ren·neu·ker (de ~ (m.), ~s)
1 [inf.] muggenzifter

Zet die offtipic tags dan om je hele post.


Kijk de volgende pagina eens goed door: http://www.mysql.com/doc/en/LOAD_DATA.html

[ Voor 17% gewijzigd door Pino op 29-01-2004 14:37 ]

"If you don't know where you are going, any road will take you there"


Verwijderd

Topicstarter
blijhoofdje, internet explorer mischien? dan noem ik t wel browser, pas als jij de oplossing weet mag je weer zoiets onzinnigs zeggen... ik wil graag reacties waar ik wat aan heb...

  • Sosabowski
  • Registratie: Juni 2003
  • Laatst online: 18-04 11:49

Sosabowski

nerd

PHP:
1
2
3
4
5
6
7
<?php
$con = mysql_connect($hostname, $username, $password) or die(mysql_error());
mysql_select_db('gegevens',$con);

$query = 'LOAD DATA LOCAL INFILE "http://localhost/mijnsite/gegevens.txt" INTO TABLE gegevens';
$result = mysql_query($query) or die(mysql_error());
?>


Dan kom je al een stuk meer te weten.....

[ Voor 11% gewijzigd door Sosabowski op 29-01-2004 14:42 ]

The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell


Verwijderd

Ik weet niet goed je je data hebt gesplitst? Met een tab of met spatie? Indien je spaties gebruikt: FIELDS TERMINATED BY ' ' toevoegen volgens: http://www.mysql.com/doc/en/LOAD_DATA.html

Het kan ook anders, indien je volgens safemode restricties geen load data local mag gebruiken:
PHP:
1
2
3
4
5
$lines = files("gegevens.txt");
for($i = 0; $i < count($lines); $i++){
  $voegtoe = str_replace(" ","','",$lines[$i]);
  mysql_query("insert into TABEL values('$voegtoe')");
}
LOCAL INFILE "http://localhost/mijnsite/gegevens.txt"
LOCAL INFILE betekend dat je de absolute locatie moet opgegeven op de webserver bv /www/user/blaat.txt, geen http locatie

[ Voor 25% gewijzigd door Verwijderd op 29-01-2004 14:48 ]


Verwijderd

Topicstarter
Als ik die laatste gebruik zegt die dat die de functie files niet kent... "Call to undefined function files"??

Maf

  • Skaah
  • Registratie: Juni 2001
  • Niet online
moet zijn: file_get_contents()

Verwijderd

Topicstarter
okej, ik heb nu weer dat witte scherm, maar hij weigert gewoon data in te voeren in de database, moet ik nog iets speciaals doen in dat tekstbestand? Ik heb nu gewoon naam spatie achternaam spatie klas spatie plaats

Verwijderd

Sorry typ fout, files moet file zijn. Hij leest alles in en verdeeld het in 'regels'

[ Voor 40% gewijzigd door Verwijderd op 29-01-2004 16:15 ]


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 21-02 23:50
heeft jouw user rechten om in de database te schrijven?

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • brummers
  • Registratie: September 2003
  • Nu online
mijn probleem lijkt op dit probleem vandaat dat ik het hier post.

ik wil tekstdocumenten met de volgende data importeren in mysql

0005000 00:00:47 16-11-05 FLEX-A ALPHA 1600 288-C2000 Testpage
0005000 00:00:48 16-11-05 FLEX-A ALPHA 1600 288-C2000 Testpage
0005000 00:00:49 16-11-05 FLEX-A ALPHA 1600 288-C2000 Testpage
0005000 00:00:50 16-11-05 FLEX-A ALPHA 1600 288-C2000 Testpage

ik heb nu even een copy genomen van de eerste regel normaal is elke regel anders

deze code heb ik nu

<?php
$dbH = mysql_connect('localhost', 'pdw', '++++') or die('Could not connect to MySQL server.<br>' . mysql_error());
mysql_select_db('pdw');
$CSVFile = '051116.LOG';
mysql_query('LOAD DATA LOCAL INFILE "051116.LOG" INTO TABLE pdw_log FIELDS TERMINATED BY " " LINES TERMINATED BY "\n";') or die('Error loading data file.<br>' . mysql_error());
mysql_close($dbH);
?>

Alles gaat goed tot en met de eerste 4 velden dus
0005000 00:00:47 16-11-05 FLEX-A worden netjes in de database gezet echter na FLEX-A komen er 4 spaties en geen 1 hoe kan ik dat oplossen zodat de rest ook geimporteerd word.

2 problemen nog
1e hoe kan ik zorgen dat de rest ook geimporteerd word.

2e alle velden hebben een vaste lengte qua tekst echter het laatste veld kan langer of korter zijn en moet dan niet afgebroken worden dus alles na 288-C2000 moet in 1 veld komen.

Als ik vandaag over water loop, staat er morgen in de krant dat ik niet kan zwemmen


  • Jimbolino
  • Registratie: Januari 2001
  • Laatst online: 15-04 00:31

Jimbolino

troep.com

waarom lees je die file niet regel voor regel in, en gebruik je een functie om de data op te splitsen en daarna met een "echt" insert-statement in de database te zetten... heb je gelijk een beetje platformonafhankelijkheid ook...

The two basic principles of Windows system administration:
For minor problems, reboot
For major problems, reinstall


  • brummers
  • Registratie: September 2003
  • Nu online
ik kreeg de opmerking dat dit het snelste en beste zou werken.

maar er gaan meer wegen naar rome.

ik zal eens op php.net gaan zoeken.
iemand die me al in de goede richting kan duwen?

zal dit eens gaan bekijken:

<?
$lines = files("gegevens.txt");
for($i = 0; $i < count($lines); $i++){
$voegtoe = str_replace(" ","','",$lines[$i]);
mysql_query("insert into TABEL values('$voegtoe')");
}
?>

[ Voor 38% gewijzigd door brummers op 02-01-2006 23:32 ]

Als ik vandaag over water loop, staat er morgen in de krant dat ik niet kan zwemmen

Pagina: 1