SQL Daten von einer DB in ein andere kopieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • SQL Daten von einer DB in ein andere kopieren

    Hi,

    ich bin kein Profi eher jemand ders versucht. Bin nun seit einer Woche dabei folgendes zu realisieren. Es funktioniert auch, aber es dauert bei 400tsd Datensätzen einfach sehr lang. Gibt es eine andere Lösung welche der Geschwindigkeit ein bisschen entgegen kommt?

    Ich habe einen Webshop mit 276.000 Artikel, derzeit. Vom GH bekomm ich den Aktuellen Lagerbestand als CSV Datei mit 468.00 Artikeln.
    Eine product_temp mit den Spalten wie in der CSV ist vorhanden und lädt diese auch vom FTP herrunter, speichert diese in der product_temp. Er gleicht diese auch mit der product ab und trägt diese ein.

    Die Spalten aus product_temp sind nicht gleich product!

    Nur die Geschwindigkeit ist ein bisschen zu langsam. Als Test gestern Abend auf heute morgen waren es 10 Stunden und mehr.
    Bitte fragt mich keine genauen Deteials des Codes, ich bin froh das ich es so hinbekommen habe, und wäre über Hilfe sehr dankbar.
    Hier hab ich den Code welchen ich benutze.

    PHP-Quellcode

    1. <?php
    2. ini_set('display_errors', 1);
    3. ini_set('display_startup_errors', 1);
    4. error_reporting(E_ALL);
    5. $start= microtime(true);
    6. //$source='/var/www/clients/client2/web7/web/3333333333333333.CSV';
    7. $source='ftp://333333:3333333@3333333.33333333.de/DATEN/333333333.CSV';
    8. $uploadfile='/var/www/clients/client2/web7/web/DATEN/'.basename($source);
    9. file_put_contents($uploadfile,file_get_contents($source)); //läd Datei auf den Server
    10. //$mysqli = new mysqli("localhost", "c2test", "3333", "c2test");
    11. $mysqli = new mysqli("333333333333333333333", "test-33333333", "3333#", "test-333333");
    12. $loadData = "LOAD DATA LOCAL INFILE '$uploadfile'
    13. INTO TABLE product_temp
    14. FIELDS TERMINATED BY ';' IGNORE 1
    15. LINES (Artikelnummer, EAN, Herstellerartikelnummer, Hersteller, ME, PE , Preis_pro_PE, KVE, Bestand)";
    16. //läd Datei in Datenbank
    17. $mysqli->multi_query($loadData);
    18. $updateData = "UPDATE product s INNER JOIN product_temp c
    19. USING(ean) SET s.stock=c.Bestand, s.available_stock=c.Bestand";
    20. //Updatet alle Änderrungen in Artikel-DB
    21. $mysqli->multi_query($updateData);
    22. $truncate = "TRUNCATE TABLE product_temp";
    23. $mysqli->multi_query($truncate);
    24. if($loadData !== FALSE)
    25. {
    26. echo("Daten erfolgreich bearbeitet");
    27. }else{
    28. echo("Es ist eine Fehler aufgetreten");
    29. }
    30. $dauer = microtime(true) - $start;
    31. echo "<br />Verarbeitung des Skripts: $dauer Sek.";
    32. ?>
    Alles anzeigen
    Ich würd zu gern die Welt verändern, doch Gott rückt den Quellcode net raus.