Wie kann eine einzelne Tabelle in einer MySQL-Datenbank gesichert werden?

441

Standardmäßig wird mysqldumpdie Sicherung einer gesamten Datenbank durchgeführt. Ich muss eine einzelne Tabelle in MySQL sichern. Ist es möglich? Wie stelle ich es wieder her?

Mandar Pande
quelle

Antworten:

838

Speichern Sie eine einzelne Tabelle aus .sql und stellen Sie sie wieder her

Dump

mysqldump db_name table_name > table_name.sql

Dumping aus einer entfernten Datenbank

mysqldump -u <db_username> -h <db_host> -p db_name table_name > table_name.sql

Zur weiteren Bezugnahme:

http://www.abbeyworkshop.com/howto/lamp/MySQL_Export_Backup/index.html

Wiederherstellen

mysql -u <user_name> -p db_name
mysql> source <full_path>/table_name.sql

oder in einer Zeile

mysql -u username -p db_name < /path/to/table_name.sql


Speichern und Wiederherstellen einer einzelnen Tabelle aus einem komprimierten Format (.sql.gz)

Bildnachweis: John McGrath

Dump

mysqldump db_name table_name | gzip > table_name.sql.gz

Wiederherstellen

gunzip < table_name.sql.gz | mysql -u username -p db_name

Ozair Kafray
quelle
13
SQL wird normalerweise gut komprimiert - Sie können den obigen Befehl durch gzip leiten und die resultierende Datei wird viel kleiner: mysqldump db_name table_name | gzip > table_name.sql.gz um wiederherzustellen: gunzip < table_name.sql.gz | mysql -u username -p db_name
John McGrath
Was ist, wenn Sie das Kennwort in die Befehlszeile aufnehmen möchten? Sie verwenden also bereits -pPASSWORD
Freedo
23

mysqldump kann einen tbl_name-Parameter verwenden, sodass nur die angegebenen Tabellen gesichert werden.

mysqldump -u -p yourdb yourtable > c:\backups\backup.sql
Jacob
quelle
15

Versuchen

for line in $(mysql -u... -p... -AN -e "show tables from NameDataBase");
do 
mysqldump -u... -p.... NameDataBase $line > $line.sql ; 
done
  • $ line cotent names tables;)
Robin Gomez
quelle
1
Dies ist praktisch, um eine Datenbank in separate Tabellenabfragen zu verschieben. Kann ich genau wissen, was die Optionen bewirken?
Xiankai
Hallo, -AN (- no-auto-rehash, -A | --skip-column-names, -N Schreibe keine Spaltennamen in die Ergebnisse.) -E (- execute = Anweisung, -e Anweisung | Führe die aus Anweisung und beenden. Das Standardausgabeformat ist das mit --batch erstellte.) fuente: dev.mysql.com/doc/refman/5.6/en/mysql-command-options.html
Robin Gomez
12

Wir können einen MySQL-Dump einer bestimmten Tabelle mit einer bestimmten Bedingung wie unten erstellen

mysqldump -uusername -p -hhost databasename tablename --skip-lock-tables

Wenn wir eine bestimmte where-Bedingung zur Tabelle hinzufügen möchten, können wir den folgenden Befehl verwenden

mysqldump -uusername -p -hhost databasename tablename --where="date=20140501" --skip-lock-tables
minhas23
quelle
8

Sie können ganz einfach ausgewählte Tabellen verwenden , um Dump verwenden MYSQLWorkbench tool, einzeln oder Gruppe von Tabellen auf einer Müllhalde dann wie folgt importieren: auch kann u hinzufügen Host - Informationen , wenn u es in Ihrem lokalen ausgeführt werden , indem das Hinzufügen -h IP.ADDRESS.NUMBER After-u Nutzername

mysql -u root -p databasename < dumpfileFOurTableInOneDump.sql 
Daniel Adenew
quelle
Leider hat MySQL Workbench einige Probleme, die dazu führen können, dass ungültige Daten exportiert werden, was nutzlos ist ...
Barell
6

Sie können diesen Code verwenden:

In diesem Beispiel wird eine Sicherungskopie der Sugarcrm-Datenbank erstellt und die Ausgabe an Sugarcrm.sql ausgegeben

# mysqldump -u root -ptmppassword sugarcrm > sugarcrm.sql

# mysqldump -u root -p[root_password] [database_name] > dumpfilename.sql

Die Datei suggercrm.sql enthält Drop-Tabellen, Tabellen erstellen und Befehle zum Einfügen für alle Tabellen in der Sugarcrm-Datenbank. Es folgt eine Teilausgabe von suggercrm.sql, die die Speicherauszugsinformationen der Tabelle accounts_contacts zeigt:

- -

- Tabellenstruktur für Tabelle accounts_contacts

DROP TABLE IF EXISTS `accounts_contacts`;
SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE `accounts_contacts` (
`id` varchar(36) NOT NULL,
`contact_id` varchar(36) default NULL,
`account_id` varchar(36) default NULL,
`date_modified` datetime default NULL,
`deleted` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `idx_account_contact` (`account_id`,`contact_id`),
KEY `idx_contid_del_accid` (`contact_id`,`deleted`,`account_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
SET character_set_client = @saved_cs_client;

--
Linda Martin
quelle
5

Sie können den folgenden Code verwenden:

  1. Nur für die Sicherung einer einzelnen Tabellenstruktur

- -

mysqldump -d <database name> <tablename> > <filename.sql>
  1. Für einzelne Tabellenstruktur mit Daten

- -

mysqldump <database name> <tablename> > <filename.sql>

Hoffe es wird helfen.

Phönix
quelle
5

Sie können entweder mysqldumpüber die Befehlszeile verwenden:

mysqldump -u username -p password dbname tablename > "path where you want to dump"

Sie können auch MySQL Workbench verwenden:

Gehen Sie nach links> Datenexport> Schema auswählen> Tabellen auswählen und klicken Sie auf Exportieren

SAM AB
quelle
Nur eine kleine Info, lassen Sie das Leerzeichen zwischen -p und Passwort weg -> -ppassword, aber es ist unsicher
Agung Sagita