alter_Bekannter
N.A.C.J.A.C.
Zunächste mal: ganz klassisch und angeblich falsch in der Schleife gehts.
Was leider nicht funktioniert ist die schnellere Variante mit einem großen Query aus ~10.000 Inserts.
Genaue zahlen kann ich nicht nennen weil ich die Daten aus einer json Datei Extrahiere die ich hier gerne reinstellen kann.
Aber ich glaube auf ein paar Tausend Einträge kommts da eh nicht mehr an.
Besagte json:
http://mtgjson.com/json/AllCards.json
Insertquery:
[src=php]
$card_insert_query = "INSERT INTO `cards`
(`id`, `name`, `layout`, `manaCost`, `cmc`, `colors`, `type`,
`types`, `subtypes`, `text`, `power`, `toughness`, `imageName`)
VALUES
(NULL,
'" . @$card["name"] . "', '" . @$card["layout"] . "', '" . @$card["manaCost"] . "', '" . @$card["cmc"] . "', '" . $colors . "', '" . normalize_text(@$card["type"]) . "',
'" . $types . "', '" . $subtypes . "', '" . normalize_text(@$card["text"]) . "', '" . @$card["power"] . "', '" . @$card["toughness"] . "', '" . @$card["imageName"] . "');";[/src]
Die Daten sind zumindest in weiten Teilen ok, denn auf die "falsche" Variante gehts ja, allerdings verliert SQL da scheinbar seine Fähigkeit richtig zu zählen...
Fehlermeldungstechnisch siehts übrigens mau aus, hab noch nichts gefunden, daher hab ich auch vergessen es zu erwähnen.
SQL File vom geglückten Import über Querys in der Schleife kann ich bei Interesse auch hochladen, aber das Ding ist 2,5MB groß und enthält tendenziell keine Informationen, daher lass ich das erstmal.
Lösung:
mysqli Erweiterung benutzt, ist sowieso mittlerweile empfohlen, was solls...
Da gibts ne Multiquery Funktion, damit klappts.
Achtung:
Die Funktion startet mindestens einen zusätzlichen Thread!
Das Skript ist durchgelaufen lange bevor die Inserts alle drin sind!
Bei mir führt das zwar jetzt nicht zu Problemen aber dieses Verhalten sollte definitiv nicht Standard sein, so verhalten sich PHP Skripte einfach üblicherweise nicht.
Ist natürlich eine sinnvolle Ergänzung als Option, kein Zweifel.
Was leider nicht funktioniert ist die schnellere Variante mit einem großen Query aus ~10.000 Inserts.
Genaue zahlen kann ich nicht nennen weil ich die Daten aus einer json Datei Extrahiere die ich hier gerne reinstellen kann.
Aber ich glaube auf ein paar Tausend Einträge kommts da eh nicht mehr an.
Besagte json:
http://mtgjson.com/json/AllCards.json
Insertquery:
[src=php]
$card_insert_query = "INSERT INTO `cards`
(`id`, `name`, `layout`, `manaCost`, `cmc`, `colors`, `type`,
`types`, `subtypes`, `text`, `power`, `toughness`, `imageName`)
VALUES
(NULL,
'" . @$card["name"] . "', '" . @$card["layout"] . "', '" . @$card["manaCost"] . "', '" . @$card["cmc"] . "', '" . $colors . "', '" . normalize_text(@$card["type"]) . "',
'" . $types . "', '" . $subtypes . "', '" . normalize_text(@$card["text"]) . "', '" . @$card["power"] . "', '" . @$card["toughness"] . "', '" . @$card["imageName"] . "');";[/src]
Die Daten sind zumindest in weiten Teilen ok, denn auf die "falsche" Variante gehts ja, allerdings verliert SQL da scheinbar seine Fähigkeit richtig zu zählen...
Fehlermeldungstechnisch siehts übrigens mau aus, hab noch nichts gefunden, daher hab ich auch vergessen es zu erwähnen.
SQL File vom geglückten Import über Querys in der Schleife kann ich bei Interesse auch hochladen, aber das Ding ist 2,5MB groß und enthält tendenziell keine Informationen, daher lass ich das erstmal.
Lösung:
mysqli Erweiterung benutzt, ist sowieso mittlerweile empfohlen, was solls...
Da gibts ne Multiquery Funktion, damit klappts.
Achtung:
Die Funktion startet mindestens einen zusätzlichen Thread!
Das Skript ist durchgelaufen lange bevor die Inserts alle drin sind!
Bei mir führt das zwar jetzt nicht zu Problemen aber dieses Verhalten sollte definitiv nicht Standard sein, so verhalten sich PHP Skripte einfach üblicherweise nicht.
Ist natürlich eine sinnvolle Ergänzung als Option, kein Zweifel.
Zuletzt bearbeitet: