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?

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


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

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;)

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

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 

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;

--

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.


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


Nur eine kleine Info, lassen Sie das Leerzeichen zwischen -p und Passwort weg -> -ppassword, aber es ist unsicher
Agung Sagita
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.