Autor | Zpráva | ||
---|---|---|---|
guest Profil |
#1 · Zasláno: 6. 3. 2007, 20:41:00
mám databázi v MS Acces, kterou bych rád převedl do My SQL. Věřím, že existuje takové řešení, abych nemusel každý řádek číst po položkách a ty pak po insertech strkat do druhé databáze. Nevíte jak nějak efektivně udělat kód ve smyčce while?
$spojeni_odbc = ODBC_Connect("$zdrojdat", "$uzivatel", "$heslo") or die("Nelze se připojit"); $spojeni_mysql = mysql_connect("localhost", "root") or die("Nelze se připojit"); $vysledek_odbc = ODBC_Exec($spojeni_odbc, "SELECT * FROM tabulka") or die ("Došlo k chybě při zpracování SQL dotazu"); while ($pole=ODBC_Fetch_Row($vysledek_odbc)) { ????????????????????????? } ODBC_Close($spojeni_odbc); mysql_close($spojeni_mysql); Databázi v MySQL jsem si už založil, tabulku v ní také, má stejný počet sloupců a stejně pojmenované, takže si myslím, že by kód ve smyčce while mohl být velice krátký .... ale nevím, nemám dost zkušeností, proto budu rád, když pomůžete nebo mě aspoň nasměrujete. Díky |
||
guest Profil |
#2 · Zasláno: 7. 3. 2007, 00:10:54 · Upravil/a: guest
tak jsem si to udělal sám. Skript ve while vypadá takto:
while (ODBC_Fetch_Row($vysledek_odbc)) { $sqltext="INSERT INTO tabulka VALUES("; ODBC_fetch_into($vysledek_odbc, $pole); foreach ($pole as $key => $hodnota) { $sqltext.="'" . $hodnota . "'"; if ($key<count($pole)-1) $sqltext.= ","; } $sqltext.=")"; mysql_query ("$sqltext"); $sqltext=""; } Vznikl však jiný problém. Překopíruje se jen část záznamů, pak vyprší maximální čas na běžící skript: Fatal error: Maximum execution time of 30 seconds exceeded Nevíte někdo jak nastavit delší ten čas nebo jak to překopírovat rychleji? :-) Ale spíš by stačilo prodloužení změny času běhu skriptu tak na 4 minuty :-) Databáze je totiž celkem obsáhlá. předem díky |
||
buck Profil * |
#3 · Zasláno: 7. 3. 2007, 00:52:17
set_time_limit(); do závorky čas v sekundách 0 = nekonečno
|
||
guest Profil |
#4 · Zasláno: 7. 3. 2007, 01:01:27
skvělý, díky moc
|
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0