mysql: maak vuilnis schoon van 10k WordPress-berichten, maar houd iets relevant

Ik ben een beetje een mysql-leken en vraag om een ​​beetje een helpende hand.

Ik heb een WordPress 3.1.0-website geërfd met ongeveer 10.000 berichten. Elke post heeft veel irrelevante gegevens die de oorspronkelijke eigenaar niet hoefde te gebruiken, zoals Google Analytics-gegevens in elke post wanneer ze een plug-in konden gebruiken (ik probeer me voor te stellen dat ze die code 10 k + keer kopiëren).

Ik wil de berichten opruimen, maar binnen elk van de 10k-berichten staan ​​twee regels include-bestanden omringd door "[]" die ik wil behouden.

De berichten zien er als volgt uit:

vuilnis vuilnis vuilnis huisvuil huisvuil huisvuil huisvuil Huisvuil Huisvuil Huisvuil Huisvuil Huisvuil Huisvuil [include file = "filename" masterpath = "/ home/name/dir"] vuilnis vuilnis vuilnis huisvuil huisvuil huisvuil huisvuil Huisvuil Huisvuil Huisvuil Huisvuil Huisvuil Huisvuil [include file = "filename" masterpath = "/ home/name/dir"] nog meer vuilnis vuilnis vuilnis vuilnis vuilnis vuilnis vuilnis vuilnis vuilnis vuilnis vuilnis vuilnis vuilnis vuilnis vuilnis vuilnis vuilnis vuilnis vuilnis vuilnis vuilnis vuilnis vuilnis vuilnis vuilnis vuilnis

Mijn doel, na het uitvoeren van een phpMyAdmin sql dump natuurlijk :) is om alle rommel rondom de [include file] statements te verwijderen.

Er MOET een manier zijn om dit met een SQL-lijn of twee te doen, maar nogmaals, ik ben een mySQL-leken. Kan iemand me helpen? Het verwijderen van alle exemplaren van de code "handmatig"/"met de hand" is uitgesloten ... 100 berichten of zo, misschien ... maar NIET 10k berichten ...

Bedankt

2
Kunnen we op haakjes vertrouwen om alleen de belangrijke gegevens te omringen? U hebt waarschijnlijk een betrouwbaar scheidingsteken nodig voor wanneer u begint met het vastleggen van de gegevens die u wilt opslaan en wanneer u moet stoppen met vastleggen.
toegevoegd de auteur Ben Simpson, de bron
Voor de duidelijkheid, na het uitvoeren van de SQL-verwijderquery, wens ik dat het resultaat voor elk van de 10k-berichten is: [include file = "filename" masterpath = "/ home/name/dir"] [include file = "filename" masterpath = "/ home/name/dir"] En bedankt voor alle hulp.
toegevoegd de auteur user1084575, de bron
Ja, we kunnen 100% vertrouwen op de haakjes
toegevoegd de auteur user1084575, de bron

1 antwoord

Ik zou voorstellen dat u een SQL-dump doet zoals u suggereert, dan een zoekopdracht toepassen en vervangen door uw SQL-bestand met behulp van een reguliere expressiepatroon. Als u toegang hebt tot het hulpprogramma " sed ", kunt u de volgende expressie toepassen om de SQL-instructies bij te werken:

sed -i -r 's/.*(\[.*\]).*(\[.*\]).*/\1\2/' /path/to/sql_dump_file

Merk op dat de "-i" -markering deze bewerking inline maakt, wat betekent dat het oorspronkelijke bestand is gewijzigd. Zorg ervoor dat u eerst een back-up van de databasedump hebt.

U moet deze reguliere expressie beperken om alleen tegen de juiste SQL INSERT-instructies te gebruiken. Ik zou willen voorstellen dit gedeelte uit uw SQL-dumpbestand naar een nieuw bestand te kopiëren om deze bewerking toe te passen.

De "-r" -markering staat een uitgebreide reguliere expressie toe, waarmee we onze patroonafstemming kunnen groeperen. De volgende tekenreeksinstructies komen alleen overeen met de inhoud van de haakjes en verwijderen de rest van de gegevens.

More information on sed here: http://unixhelp.ed.ac.uk/CGI/man-cgi?sed

0
toegevoegd
Als dit werkt, kunt u mijn antwoord dan als geaccepteerd markeren?
toegevoegd de auteur Ben Simpson, de bron
Werkte geweldig! Bedankt!
toegevoegd de auteur user1084575, de bron