Data verplaasten van db1 naar db2 op basis van datetime

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Johan Vels

Johan Vels

20/09/2014 22:44:08
Quote Anchor link
Hallo allemaal,

Wil elke dag een query runnen, waarin data wordt verplaatst van db2 naar db1.
Nu wil ik dat hij alleen de nieuwe resultaten invoerd om deze check te doen wil ik het veld "ingevoerd" gebruiken. Dit veld zit in db2.tabel.

Er is geen mogelijkheid in db1.tabel een extra veld aan te maken om mee te vergelijken.
Voor het veld ingevoerd wil ik een datetime of timestamp gaan gebruiken. Dus voer alleen in als tijd is nieuwer.

Hoe kan ik dit het beste doen? Het mooiste zou zijn als hij ook nog laat zien hoeveel nieuwe records daadwerkelijk zijn invgevoerd.

Code die ik hiervoor nu gebruik is als volgt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php


$query
= "

INSERT INTO db1.tabel
(veld1, veld2, veld3, veld4)
SELECT veld1, veld2, veld3, veld4
FROM db2.tabel
WHERE NOT EXISTS (SELECT *
                  FROM db2.tabel
                  WHERE db1.veld4 = db2.veld4 COLLATE utf8_unicode_ci);

"
;

$result = mysql_query($query) or die ("Foutmelding: $query. ".mysql_error());

echo "Ingevoerd;

?>
Gewijzigd op 21/09/2014 11:06:40 door Johan Vels
 
PHP hulp

PHP hulp

29/04/2024 00:50:29
 
Willem vp

Willem vp

21/09/2014 01:21:58
Quote Anchor link
[...]
AND db2.ingevoerd > MAX(db1.ingevoerd)
ORDER BY db2.ingevoerd
 
Johan Vels

Johan Vels

21/09/2014 10:58:01
Quote Anchor link
@ Willem vp

Kan dus geen vergelijking doen op veld ingevoerd van db2 naar db1. Omdat veld ingevoerd niet aanwezig is in db1.

*zat een fout in mijn code bij deze gecorrigeerd*
Gewijzigd op 21/09/2014 11:06:06 door Johan Vels
 
Willem vp

Willem vp

21/09/2014 11:59:33
Quote Anchor link
Hmm, toen ik reageerde zat het veld 'ingevoerd' er nog in. ;-)

Een mogelijkheid is om vóór je de insert-query doet te bepalen wat max(db2.tabel.ingevoerd) is en die te vergelijken met een (elders opgeslagen) vorige waarde van max(db2.tabel.ingevoerd).
 
Johan Vels

Johan Vels

21/09/2014 17:00:56
Quote Anchor link
Ah oke,

Hoe voer ik dit code wise uit? Stel dat ik dus de controle wil doen met veld ingevoerd2 in db2.

Toevoeging op 21/09/2014 18:34:08:

Johan Vels op 21/09/2014 17:00:56:
Ah oke,

Hoe voer ik dit code wise uit? Stel dat ik dus de controle wil doen met bv. veld 'ingevoerd2' in db2.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.