Ü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
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).
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.
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
SELECT * FROM `tabellenname` WHERE `feldname1` = X AND `feldname2` = Y
X und Y sind hier Platzhalter für den gesuchten Wert.
SELECT * FROM `tabellenname` WHERE `feldname` LIKE '%zeichenfolge%'
% ist die Wildcard für beliebige Zeichen, in diesem Fall vor und nach der gesuchten Zeichenfolge.
UPDATE `tabellenname` SET `feldname` = REPLACE(feldname, "suchfolge", "ersatzfolge")