MySQL Datenbankoperationen

Über phpMyAdmin oder in der Shell mit dem Befehl mysqldump können ganze Datenbanken, aber auch einzelne Tabellen exportiert werden.

mysqldump --opt -h HOST -u USER -p DBNAME TABLENAMES > DATEINAME.sql

(Ohne die Angabe von TABLENAMES wird die gesamte Datenbank exportiert.)

Sollen die Tabellendaten in der Datenbank beim Import nicht überschrieben werden, muss man folgende Optionen verwenden:

mysqldump --opt --skip-add-drop-table --no-create-info --no-create-db -h HOST -u USER -p DBNAME TABLENAMES > DATEINAME.sql

Tabelle mit Bedingung exportieren

In der Shell:

mysqldump --opt -h HOST -u USER -p DBNAME TABLENAMES --where="BEDINGUNG" > DATEINAME.sql

Beispiel für eine Bedingung:

--where="tstamp > 1571288483"

In phpMyAdmin sieht dieselbe Abfrage so aus:

SELECT * FROM `tablename` WHERE `tstamp` > 1571288483

Anschließend kann das Auswahlergebnis exportiert werden (Button unter der Liste).

Tabelle importieren

Ganze Datenbank oder einzelne Tabelle(n), abhängig vom Export:

mysql -h HOST -u USER -p DBNAME < DATEINAME.sql

Komprimierte Dateien importieren:

gunzip < DATEINAME.sql.gz | mysql -h HOST -u USER -p DBNAME

Eine vorhandene Tabelle in der Datenbank wird überschrieben.

Charset nach UTF-8 konvertieren

MySQL Dump als UTF-8 erstellen:

mysqldump --opt -Q -h HOST -u USERNAME -p DATABASENAME | sed s'/DEFAULT CHARSET=.*;/DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;/g' > meinbackup.sql

Backup in neue Datenbank einspielen:

mysql -h HOST -u USERNAME -p --default-character-set=utf8 DATABASENAME < meinbackup.sql

Suchen und finden

SELECT * FROM `tabellenname` WHERE `feldname1` = X AND `feldname2` = Y

X und Y sind hier Platzhalter für den gesuchten Wert.

Ähnlichkeitssuche:

SELECT * FROM `tabellenname` WHERE `feldname` LIKE '%zeichenfolge%'

% ist die Wildcard für beliebige Zeichen, in diesem Fall vor und nach der gesuchten Zeichenfolge.

Ersetzen:

UPDATE `tabellenname` SET `feldname` = REPLACE(feldname, "suchfolge", "ersatzfolge")