![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Administrator serwera Grupa: Developerzy Postów: 521 Pomógł: 13 Dołączył: 2.04.2004 Skąd: 52°24' N 16°56' E Ostrzeżenie: (0%) ![]() ![]() |
Kontynuacja mego problemu: dwie tabele pierwsza w ms sql server 2000 druga w mySQL nazwy tabeli sa takie same, nazwy kolumn rowniez. Struktura tabeli:
Kod Tabela: sl_grupatw
grt_id | grt_nazwa Chcialbym zaktualizowac tabele mySQL na podstawie tej z ms sql server 2000 w taki sposob: jesli nie istnieje to ja utworzyc, nastepnie sprawdzic czy w tabeli mySQL sa bledne rekordy o grt_id nie zawarte w tabeli ms sql server 2000 i jesli sa to je usuwac (zrobione), nastepnie jesli jest za malo rekordow w tabeli mySQL niz w ms sql server 2000 to dodac odpowiednie rekordy tak by bylo ich tyle samo i mialy takie same wartosci (kolejnosc jest nieistotna, wartosci grt_id oraz grt_nazwa z ms sql server 2000 mam zapisane w 2 tablicach) i ostatni krok po tym wszytkim zwrocic jeszcze raz wszystkie rekordy z mySQL i porownac pola grt_nazwa z mySQL z tymi z ms sql server i jezeli sie roznia to je zaktualizowac komenda update. Nie wiem jakiej funkcji uzyc aby sie dowiedziec ktore grt_id z ms sql server 2000 nie sa zawarte w tabeli mySQL. Ponizej zamieszczam kod pliku ktory robi wszystko do kroku drugiego: [php:1:e67a28a6a5]<?php set_time_limit(0); $hostms="localhost"; $hostmy="sklep"; $userms="sa"; $usermy="root"; $passms=""; $passmy="czarownik"; $tablems="sl_GrupaTw"; $tablemy="sl_grupatw"; $valuesms="grt_Id,grt_Nazwa"; $valuesmy="grt_id,grt_nazwa"; /* $connectmy=odbc_pconnect($hostmy, $usermy, $passmy); $querymy="CREATE TABLE $tablemy (grt_Id INT NOT NULL, grt_Nazwa VARCHAR(30) NOT NULL)"; $execmy=odbc_exec($connectmy, $querymy); */ $connectms=odbc_pconnect($hostms, $userms, $passms); $queryms1="SELECT COUNT(*) FROM $tablems"; $queryms2="SELECT $valuesms FROM $tablems"; $execms1=odbc_exec($connectms, $queryms1); $execms2=odbc_exec($connectms, $queryms2); $ms_licznik=odbc_result($execms1,1); $i1="0"; while(odbc_fetch_row($execms2)){ $id[$i1]=odbc_result($execms2,1); $nazwa[$i1]=odbc_result($execms2,2); $i1++; } $wart_tab_id="'$id[0]'"; for($l1=1;$l1<$ms_licznik;$l1++){ $wart_tab_id.=", '$id[$l1]'"; } $wart_tab_nazwa="'$nazwa[0]'"; for($l2=1;$l2<$ms_licznik;$l2++){ $wart_tab_nazwa.=", '$nazwa[$l2]'"; } $wart_ms_id=array($wart_tab_id); $wart_ms_nazwa=array($wart_tab_nazwa); echo("$wart_tab_id<br>$wart_tab_nazwa<br>"); $connectmy=odbc_pconnect($hostmy, $usermy, $passmy); $querymy1="SELECT COUNT(*) FROM $tablemy WHERE grt_id NOT BETWEEN '".$id[0]."' AND '".$ms_licznik."'"; $execmy1=odbc_exec($connectmy, $querymy1); $my_licznik_zlw=odbc_result($execmy1,1); $querymy2="SELECT COUNT(*) FROM $tablemy"; $execmy2=odbc_exec($connectmy, $querymy2); $my_licznik=odbc_result($execmy2,1); $reszta_licznika=$my_licznik-$my_licznik_zlw; if($my_licznik_zlw>0){ $querymy3="SELECT grt_id FROM $tablemy WHERE grt_id NOT BETWEEN '".$id[0]."' AND '".$ms_licznik."'"; $execmy3=odbc_exec($connectmy, $querymy3); while(odbc_fetch_row($execmy3)){ $my_grt_id_zle=odbc_result($execmy3,1); echo("$my_grt_id_zle<br>"); $querymy4="DELETE FROM $tablemy WHERE grt_id='".$my_grt_id_zle."'"; odbc_exec($connectmy, $querymy4);}} if($reszta_licznika<$ms_licznik){ } ?>[/php:1:e67a28a6a5] -------------------- Środowisko: Gentoo 2008.0 | Apache | PHP5 | PostgreSQL | MySQL | Postfix
Workstation: Gentoo 2008.0 | Firefox Thomas Alva Edison: "Aby coś wynaleźć wystarczy odrobina wyobraźni i sterta złomu ..." Odpowiedź na każde pytanie typu "Jak ...": "Nie da się, to nie PostgreSQL" |
|
|
![]()
Post
#2
|
|
![]() Administrator serwera Grupa: Developerzy Postów: 521 Pomógł: 13 Dołączył: 2.04.2004 Skąd: 52°24' N 16°56' E Ostrzeżenie: (0%) ![]() ![]() |
Dobra doszedlem sam do tego tylko chcialbym sie zapytac czy jakos mozna to ewentualnie przyspieszyc (bo takich rekordow mogloby byc czasem kolo 1000 :wink: ) i czy dalem dobry warunek na sprawdzenie czy tabela istnieje?? Przedstawiam kod pliku ktory to wykonuje nie wprowadzalem dublowania gdyz struktura tabeli na to nie pozwala
![]() [php:1:fd5db5e7ad]<?php set_time_limit(0); $hostms="localhost"; $hostmy="sklep"; $userms="sa"; $usermy="root"; $passms=""; $passmy="czarownik"; $tablems="sl_GrupaTw"; $tablemy="sl_grupatw"; $valuesms="grt_Id,grt_Nazwa"; $valuesmy="grt_id,grt_nazwa"; $connectms=odbc_pconnect($hostms, $userms, $passms); $connectmy=odbc_pconnect($hostmy, $usermy, $passmy); $querymyt="SHOW INDEX FROM $tablemy FROM sklep_internetowy"; if(!@odbc_exec($connectmy, $querymyt)){ $querymy="CREATE TABLE $tablemy (grt_Id INT NOT NULL PRIMARY KEY, grt_Nazwa VARCHAR(30) NOT NULL)"; $execmy=odbc_exec($connectmy, $querymy); echo("tabela $tablemy utworzona poprawnie<br>"); } $queryms1="SELECT COUNT(*) FROM $tablems"; $queryms2="SELECT $valuesms FROM $tablems"; $execms1=odbc_exec($connectms, $queryms1); $execms2=odbc_exec($connectms, $queryms2); $ms_licznik=odbc_result($execms1,1); $i1="0"; while(odbc_fetch_row($execms2)){ $ms_id[$i1]=odbc_result($execms2,1); $ms_nazwa[$i1]=odbc_result($execms2,2); $i1++; } $querymy1="SELECT COUNT(*) FROM $tablemy WHERE grt_Id NOT BETWEEN '".$ms_id[0]."' AND '".$ms_licznik."'"; $execmy1=odbc_exec($connectmy, $querymy1); $my_licznik_zlw=odbc_result($execmy1,1); $querymy2="SELECT COUNT(*) FROM $tablemy"; $execmy2=odbc_exec($connectmy, $querymy2); $my_licznik=odbc_result($execmy2,1); $reszta_licznika=$my_licznik-$my_licznik_zlw; if($my_licznik_zlw>0){ $querymy3="SELECT grt_Id FROM $tablemy WHERE grt_Id NOT BETWEEN '".$ms_id[0]."' AND '".$ms_licznik."'"; $execmy3=odbc_exec($connectmy, $querymy3); while(odbc_fetch_row($execmy3)){ $my_grt_id_zle=odbc_result($execmy3,1); $querymy4="DELETE FROM $tablemy WHERE grt_Id='".$my_grt_id_zle."'"; odbc_exec($connectmy, $querymy4); echo("zmazano wiersz o grt_id = $my_grt_id_zle<br>"); } } if($reszta_licznika<=$ms_licznik){ $f2="0"; for($f1=1;$f1<=$ms_licznik;$f1++){ $querymy="SELECT grt_Id FROM $tablemy WHERE grt_Id='$ms_id[$f2]' "; $execmy=odbc_exec($connectmy, $querymy); $my_id[$f1]=odbc_result($execmy,1); if($my_id[$f1]==""){ $querymy="INSERT INTO $tablemy (grt_Id, grt_Nazwa) VALUES ('".$ms_id[$f2]."', '".$ms_nazwa[$f2]."')"; odbc_exec($connectmy, $querymy); echo("dodano wiersz o grt_id = $ms_id[$f2]<br>"); } $f2++;}} $f3="0"; for($f4=1;$f4<=$ms_licznik;$f4++){ $querymy3="SELECT grt_Nazwa FROM $tablemy WHERE grt_Id='$ms_id[$f3]' "; $execmy3=odbc_exec($connectmy, $querymy3); $my_nazwa[$f4]=odbc_result($execmy3,1); if($my_nazwa[$f4]!==$ms_nazwa[$f3]){ echo("$my_nazwa[$f4] jest rozne od $ms_nazwa[$f3] | $f4<br>"); $querymy1="DELETE FROM $tablemy WHERE grt_Id='$ms_id[$f3]' AND grt_Nazwa='".$my_nazwa[$f4]."'"; $querymy2="INSERT INTO $tablemy (grt_Id, grt_Nazwa) VALUES ('".$ms_id[$f3]."', '".$ms_nazwa[$f3]."')"; odbc_exec($connectmy, $querymy1); odbc_exec($connectmy, $querymy2); echo("zmieniono wiersz: grt_id = $ms_id[$f3] i grt_nazwa = $my_nazwa[$f4], na: grt_id = $ms_id[$f3] i grt_nazwa = $ms_nazwa[$f3] | $f4<br>"); }else{ echo("$ms_id[$f3] - $my_nazwa[$f4] | $f4<br>"); } $f3++; } ?>[/php:1:fd5db5e7ad] P.S. Przepraszam ze w nowym poscie ale tak jakos wyszlo ![]() -------------------- Środowisko: Gentoo 2008.0 | Apache | PHP5 | PostgreSQL | MySQL | Postfix
Workstation: Gentoo 2008.0 | Firefox Thomas Alva Edison: "Aby coś wynaleźć wystarczy odrobina wyobraźni i sterta złomu ..." Odpowiedź na każde pytanie typu "Jak ...": "Nie da się, to nie PostgreSQL" |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 04:06 |