Forum: PC-Programmierung MySQL - Wie gewisse Tabellen mit gewissen Wildcard Namen leeren?


von Ate E. (drigo)


Lesenswert?

Hallo Leute,

Haben ein Programm, bei dem immer mal wieder die Backup und Log Dateien 
geleert werden müssen, damit die Datenmengen sich noch in Grenzen 
halten.

Es sollten z.Bsp. folgende Tabellen geleert werden:

BACK_DEP
BACK_EN16931
BACK_BLZ
...
...
...

ARTIKEL_SCHNELLZUGRIFF_LOG
MITARBEITER_LOG
WARENGRUPPEN_LOG
...
...
...

Aber wie bekomme ich das mit den Wildcards hin?

von Harald K. (kirnbichler)


Lesenswert?

Was jetzt? Dateien oder Tabellen?

von Steve van de Grens (roehrmond)


Lesenswert?

Das geht nur mit einer SQL Prozedur, die zuerst die Namen der Tabellen 
ermittelt und dann in einer Loop für jede einzelne Tabelle ein DELETE 
Seatement ausführt.

Irgendwo im mysql Schema ist eine Tabelle, welche die Namen aller 
Tabellen enthält.

von Ein T. (ein_typ)


Lesenswert?

Ate E. schrieb:
> Es sollten z.Bsp. folgende Tabellen geleert werden:
>
> BACK_DEP
> BACK_EN16931
> BACK_BLZ
> ...
> ARTIKEL_SCHNELLZUGRIFF_LOG
> MITARBEITER_LOG
> WARENGRUPPEN_LOG
1
for tbl in $(echo 'SHOW TABLES;' | mysql ... | grep -v '^Tables_in_' | egrep '(pat_1|pat_2|...|pat_n)'); do echo "TRUNCATE ${tbl};"; done | mysql ...

von Ate E. (drigo)


Lesenswert?

Bräuchte eine SQL statement.
Schade, wenn es mit wildcards nicht geht.

von Ate E. (drigo)


Lesenswert?

Habe jetzt bei HeidiSQL eine Möglichkeit der Sortierung und 
nachträglicher Bereinigung gefunden:
Datenbank anklicken
Es werden rechts alle Tabellen angezeigt
Benötigte Tabelle wählen und mit rechter Maustaste draufklicken
Tabellen leeren auswählen -> Fertig

Trotzdem danke :-)

von Daniel D. (danielduese)


Lesenswert?

USE `myDatabase`;
SELECT
  GROUP_CONCAT(DISTINCT CONCAT('TRUNCATE ',`TABLE_NAME`) SEPARATOR '; ')
FROM
  `INFORMATION_SCHEMA`.`TABLES`
WHERE
  `TABLE_SCHEMA` = DATABASE() AND
  `TABLE_TYPE` = 'BASE TABLE' AND
  `TABLE_NAME` LIKE 'BACK_%';

Ergebnis ist dann ein multiple statement, das ausgeführt werden muss...

: Bearbeitet durch User
von Daniel D. (danielduese)


Lesenswert?

Ate E. schrieb:
> Habe jetzt bei HeidiSQL eine Möglichkeit der Sortierung und
> nachträglicher Bereinigung gefunden:
> Trotzdem danke :-)
:-ſ erst suchen dann posten

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.