Ankündigung

Einklappen
Keine Ankündigung bisher.

SQL-Dump mit PHP bearbeiten

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • SQL-Dump mit PHP bearbeiten

    Hallo zusammen,
    ich habe ein riesiges SQL-Dump-File vorliegen. Innerhalb dieses Files gibt es für jeweils 10 Tabellen zuerst

    Code:
    CREATE TABLE 'xyz'
    und danach alle Spaltendeklarationen.

    Nach der Erzeugung einer Tabelle kommt zur zugehörigen Tabelle
    Code:
    INSERT INTO 'xyz' VALUES (a, b, c), (d,e,f) ...
    Das Dump-File ist wie gesagt riesig und ich möchte es nicht händisch bearbeiten.
    Ich möchte zuerst alle
    Code:
    CREATE TABLE
    Anweisungen löschen, damit in dem Dump nurnoch die
    Code:
    INSERT
    Anweisungen vorhanden sind. Weiß jemand wie man das mit PHP hinbekommt? Ich dachte an Auslesen des ganzen Dumps und dann darüber loopen irgendwie und löschen. Nur ich weiß nicht wie das funktionieren soll dass er von
    Code:
    CREATE TABLE
    bis zum Abschluss der Anweisung löscht, dann die Inserts stehen lässt und erst bei dem nächsten Create wieder löscht.

    Danach möchte ich die Inserts bearbeiten. Es soll aus
    Code:
    INSERT INTO 'xyz' VALUES (a,b,c), (d,e,f) ...
    durch PHP-Inserts irgendwie sowas entstehen:
    Code:
    INSERT INTO 'xyz' VALUES (<tenant_id>, a, b, c), (<tenant_id>, d, e, f) ...
    Brauche dringend Hilfe. Vielen Dank schonmal !


  • #2
    Geht mit einem guten Regex und Notepad++ komplett ohne PHP mMn.

    Suche nach

    Code:
    CREATE TABLE[^;]+;
    und lösche das

    danach suchste nach

    Code:
    INSERT INTO '([^']+)' VALUES \(([^)]+)\), \(([^)]+)\);
    und ersetzt das durch

    Code:
    INSERT INTO '$1' VALUES (<tenant_id>, $2), (<tenant_id>, $3)
    Lerne Grundlagen | Schreibe gute Beispiele | PDO > mysqli > mysql | Versuch nicht, das Rad neu zu erfinden | Warum $foo[bar] böse ist | SQL Injections | Hashes sind keine Verschlüsselungen! | Dein E-Mail Regex ist falsch

    Kommentar


    • #3
      Super, vielen herzlichen Dank, das probier ich aus.
      Regex dann in Textdatei schreiben, aber wie lass ich das dann über den Dump laufen?

      Kommentar


      • #4
        Es gibt bei vielen Editoren Suchen/Ersetzen-Funktionen, die mit Regex arbeiten können. (Ich kenne nur Notepad++, aber gibt bestimmt andere, die das auch schaffen)
        Lerne Grundlagen | Schreibe gute Beispiele | PDO > mysqli > mysql | Versuch nicht, das Rad neu zu erfinden | Warum $foo[bar] böse ist | SQL Injections | Hashes sind keine Verschlüsselungen! | Dein E-Mail Regex ist falsch

        Kommentar

        Lädt...
        X