[mysql] update from file

Pagina: 1
Acties:

  • Haranaka
  • Registratie: September 2000
  • Laatst online: 07-06 23:13
Ik heb een kleine database gemaakt. Deze bevat 3 kolommen, de eerste bevat een naam de andere 2 bevatten getallen (de waarden van gisteren van van vandaag)
Nu wil ik deze waarden automatisch updaten. In een scripje regel ik dat 1 keer per dag de waarden van 'vandaag' naar gisteren worden verplaats. Maar nu wil ik die waarden van 'vandaag' zelf nog updaten uit een file. Deze file (user.txt) wordt automatisch aangemaakt in de vorm van
Naam <tab> "waarde vandaag" (zonder de "")

Maar ik krijg het maar niet voorelkaar om die lijst goed in mysql te krijgen. Ook niet na het uitvoerig lezen van de betreffende delen van de manual :(

Ik kom niet verder dan:
load data infile "user.txt" replace into table stats (vandaag)

Maar dan maakt hij een nieuwe rij aan met alleen maar NULL erin, en dat is niet de bedoeling, zonder de replace doet hij het wel, maar dan maakt hij een nieuwe user aan ipv dat hij slechts de waarde update.

Wie kan mij helpen?

...


  • Orphix
  • Registratie: Februari 2000
  • Niet online
Wat bedoel je met 'vandaag naar gisteren' verplaatsen :?
Ik hoop niet dat je in je database 2 tabellen hebt die 'vandaag' en 'gisteren' heetten, in dat geval moet je nog eens goed naar je DB ontwerp kijken.
En welke script-taal gebruik je?
Je kan het namelijk ook aan de script-kant oplossen. Dus bestand inlezen, waarden eruithalen en 1 voor 1 in de database proppen.

  • Haranaka
  • Registratie: September 2000
  • Laatst online: 07-06 23:13
Zo ziet het er simpel uit:

stats:
code:
1
2
3
name    tot_gis tot_van
Haranaka    16000   17000
Jack    14500   15000

het eerste wat ik doe is iets na middernacht
update stats set tot_van=tot_gis
Daarna wil ik dus de nieuwe waarden van tot_van uit de file lezen. Die ziet er zo uit:

user.txt
code:
1
2
Haranaka 17600
Jack 16000

Ik was het van plan in een bestandje (command) de commando's te zetten. Dan met een simpel sh of bash scipje:
mysql < command

...


  • KoW
  • Registratie: Juli 2001
  • Laatst online: 17-08-2022

KoW

Parse parsed te veel

Hmm, ik ben niet zo'n PHP expert, maar dit lijkt me niet direct een SQL probleem.
Je zal met je scriptje iets moeten schrijven wat een bestand inleest, en dat die naar de tabel wegschrijven.
Als je dat bestand eerst naar een tabel inleest kun je dat in een keer doen, met een SQL commando.
En anders moet je in de script het bestand regel voor regel doorlopen en dan de betreffende regel in de tabel updaten

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Als je een PHP pagina hebt die zoiets als dit doet :
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?
$fp = fopen("user.txt","r");

while(!feof($fp))
{
   $line = fgets($fp,4096);
   $lineExp = explode(" ",$line);
   $qry = "UPDATE tablename SET tot_gis = $lineExp[1] WHERE name ='$lineExp[0]';";
   connectdb(); // Connectie naar mysql, maar dat kun je zelf wel toch ?
 mysq_query($qry);
}
?>

Dit is maar een voorbeeld, verwacht niet dat het in een keer werkt, maar het maakt wel de bedoeling duidelijk.

Anders dan moet je bij het opbouwen van de user.txt als deze qry's opnemen.

Vragen :?