/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Sammenligne 2 databaser
Fra : Thomas Duus Jürgense~


Dato : 30-12-05 20:36

hejsa
Jeg har 2 ens databaser, en ny og en gammel, men af en eller anden årsag er
ikke alle indlæg fra den gamle kommet med over i den nye, derfor skal jeg
bruge et script som kan kalde begge databaser sammenligne indlægsnumrene og
skrive hvilke indlæg som optræder i den gamle database men ikke i den nye.

jeg kan sagtens kalde databaserne og få skrevet alle indlægsnumrene ved at
gøre sådan, men det må kunne gøres sådan at den kun skriver hvilke indlæg
som findes i database 1 men ikke i database 2

<?
$database = mysql_connect("xxx", "xxx", "xxx");
if (!$database) die ('Kunne ikke forbinde til databasen');
mysql_select_db("venus",$database);
mysql_select_db("venus",$database) or die('Kunne ikke vælge database');
$foresp = mysql_query("SELECT B_Number FROM w3t_Posts
ORDER BY B_Number");
if (!$foresp) die (mysql_error());
print mysql_num_rows($foresp)." fundet<BR><BR>";

while ($data = mysql_fetch_array($foresp)) {
echo "$data[0]<br>";

}
?

Noge der kan hjælpe ??

Thomas



 
 
Thomas Duus Jürgense~ (30-12-2005)
Kommentar
Fra : Thomas Duus Jürgense~


Dato : 30-12-05 21:00

Jeg skal lige fortælle at databaserne ligger på 2 forskellige servere

thomas



Stig H. Jacobsen (08-01-2006)
Kommentar
Fra : Stig H. Jacobsen


Dato : 08-01-06 14:03

On Fri, 30 Dec 2005 20:35:57 +0100, "Thomas Duus Jürgensen" wrote:

> Jeg har 2 ens databaser, en ny og en gammel, men af en eller anden årsag er
> ikke alle indlæg fra den gamle kommet med over i den nye, derfor skal jeg
> bruge et script som kan kalde begge databaser sammenligne indlægsnumrene og
> skrive hvilke indlæg som optræder i den gamle database men ikke i den nye.

Hvis de er så ens, som du skriver, så behøver du slet ikke SQL:

mysqldump db1 >db1.dump
mysqldump db2 >db2.dump
diff db1.dump db2.dump

diff er standard på Unix/Linux, som jeg antager er din platform.

--
Stig

Per Thomsen (31-12-2005)
Kommentar
Fra : Per Thomsen


Dato : 31-12-05 00:47

Thomas Duus Jürgensen wrote:
> hejsa
> Jeg har 2 ens databaser, en ny og en gammel, men af en eller anden årsag er
> ikke alle indlæg fra den gamle kommet med over i den nye, derfor skal jeg
> bruge et script som kan kalde begge databaser sammenligne indlægsnumrene og
> skrive hvilke indlæg som optræder i den gamle database men ikke i den nye.
>
> jeg kan sagtens kalde databaserne og få skrevet alle indlægsnumrene ved at
> gøre sådan, men det må kunne gøres sådan at den kun skriver hvilke indlæg
> som findes i database 1 men ikke i database 2
>
> <?
> $database = mysql_connect("xxx", "xxx", "xxx");
> if (!$database) die ('Kunne ikke forbinde til databasen');
> mysql_select_db("venus",$database);
> mysql_select_db("venus",$database) or die('Kunne ikke vælge database');
> $foresp = mysql_query("SELECT B_Number FROM w3t_Posts
> ORDER BY B_Number");
> if (!$foresp) die (mysql_error());
> print mysql_num_rows($foresp)." fundet<BR><BR>";
>
> while ($data = mysql_fetch_array($foresp)) {
> echo "$data[0]<br>";
>
> }
> ?
>
> Noge der kan hjælpe ??
>
> Thomas
>
>

Hint: <http://dk2.php.net/array_diff>


Quick'n dirty (læs utestet): <http://pastebin.com/484788>

MVH Per Thomsen,
<http://www.pert.dk/>



Thomas Duus Jürgense~ (31-12-2005)
Kommentar
Fra : Thomas Duus Jürgense~


Dato : 31-12-05 11:20

uha det er du vist rigtig god til

jeg bukker og takker men den bliver ved med at komme med parse error i linie
35

thomas



Per Thomsen (31-12-2005)
Kommentar
Fra : Per Thomsen


Dato : 31-12-05 13:38

Thomas Duus Jürgensen wrote:
> uha det er du vist rigtig god til
>
> jeg bukker og takker men den bliver ved med at komme med parse error i linie
> 35
>
> thomas
>

Der var gået noget galt i antallet af { og }, men jeg har rettet det
her: <http://pastebin.com/485217>

MVH Per Thomsen,
<http://www.pert.dk/>


Thomas Duus Jürgense~ (31-12-2005)
Kommentar
Fra : Thomas Duus Jürgense~


Dato : 31-12-05 14:40

he he
nu virker det, men er lidt uoverskueligt

www.4701.dk/numre.php

og giver vist ikke det rigtite resultat

thomas



Per Thomsen (31-12-2005)
Kommentar
Fra : Per Thomsen


Dato : 31-12-05 17:34

Thomas Duus Jürgensen wrote:
> he he
> nu virker det, men er lidt uoverskueligt
>
> www.4701.dk/numre.php
>
> og giver vist ikke det rigtite resultat
>
> thomas
>
>
Ja, det ser måske lidt uoverskueligt ud pga. "print_r", men jeg vidste
jo ikke rigtig, hvordan du gerne ville have tallene ud.

Det endelige array er såvidt jeg kan se et array, der starter med index
nr. 1460, som indeholder værdien 1735. (Herudaf kan man måske udlede at
de første 1369 forekomster var ens, men det er ikke sikkert, det kommer
jo an på indholdet i dine databaser.)

Du kan også få dem som en komma-separeret liste, bare skift
"print_r($diff)" ud med "echo implode(',', $diff);" (linje 46).

<http://pastebin.com/485411>

Hvorvidt resultatet ser rigtig ud eller ej, er jo lidt svært for mig at
se :).

Er det fordi du synes, der er for mange, eller for få?
Eller har du kontrolleret og set, at resultatet faktisk ikke passer?

Du kan da. evt. lave et program der kontrollerer det, det er jo bare
lavet program, der står alle id'erne fra $diff array'et op i database nr
2. Så skulle du gerne se, at ingen af dem findes deri.
For yderligere kontrol, kan du jo så også slå dem op i database 1, og se
at de faktisk findes deri.
Et sådant program vil sikkert også kunne give et godt udgangspunkt for
et program, der kopierer de manglende rækker, fra den ene database til
den anden.

Du kan selvfølgelig også bare manuelt, lave nogle stik prøver:
Tag en 5-6 (eller hvor mange du nu har tålmodighed til) id'er fra $diff,
og slå dem manuelt op i databaserne, og se at de findes det ene sted og
ikke det andet sted.

Hvis du stadig mener at resultatet er forkert, så skriv igen, så skal
jeg gerne være behjælpelig med at finde fejlen.

Men måske bliver det ikke lige i dag ;)

Godt Nytår :)

MVH Per Thomsen,
<http://www.pert.dk/>


Thomas Duus Jürgense~ (01-01-2006)
Kommentar
Fra : Thomas Duus Jürgense~


Dato : 01-01-06 21:20

Nu fandt jeg ud af at gennemskue resultatet og jeg har nu klaret
problemet, tusind tak for hjælpen og godt nytår

thomas



Leif Neland (27-01-2006)
Kommentar
Fra : Leif Neland


Dato : 27-01-06 13:54

Thomas Duus Jürgensen wrote:
> hejsa
> Jeg har 2 ens databaser, en ny og en gammel, men af en eller anden
> årsag er ikke alle indlæg fra den gamle kommet med over i den nye,
> derfor skal jeg bruge et script som kan kalde begge databaser
> sammenligne indlægsnumrene og skrive hvilke indlæg som optræder i den
> gamle database men ikke i den nye.
> jeg kan sagtens kalde databaserne og få skrevet alle indlægsnumrene
> ved at gøre sådan, men det må kunne gøres sådan at den kun skriver
> hvilke indlæg som findes i database 1 men ikke i database 2
>

Hvis indlægsnumrene er en unik nøgle, så skal du bare have den gamle tabel
over på den ny server, evt i en anden database, og så lave en "insert ignore
into indlaeg select * from backup.indlaeg"

Leif



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408920
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste