Autor Zpráva
guest
Profil
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
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 *
set_time_limit(); do závorky čas v sekundách 0 = nekonečno
guest
Profil
skvělý, díky moc
Toto téma je uzamčeno. Odpověď nelze zaslat.