MySQLデータベースの単一のテーブルのバックアップを取る方法は?


441

デフォルトでmysqldumpは、データベース全体のバックアップを取ります。MySQLで単一のテーブルをバックアップする必要があります。出来ますか?どうすれば復元できますか?

回答:


838

.sqlから単一のテーブルをダンプして復元する

投げ捨てる

mysqldump db_name table_name > table_name.sql

リモートデータベースからのダンプ

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

詳細については:

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

戻す

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

または一行で

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


圧縮(.sql.gz)形式から単一のテーブルをダンプして復元する

クレジット:John McGrath

投げ捨てる

mysqldump db_name table_name | gzip > table_name.sql.gz

戻す

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


13
通常、SQLは適切に圧縮されます。上記のコマンドをgzipを介してパイプすると、結果のファイルがはるかに小さくなります。 mysqldump db_name table_name | gzip > table_name.sql.gz 復元するには: gunzip < table_name.sql.gz | mysql -u username -p db_name
John McGrath

コマンドラインにパスワードを含める場合はどうなりますか?したがって、すでに-pPASSWORD
Freedo

23

mysqldumpはtbl_nameパラメータを取ることができるため、指定されたテーブルのみをバックアップします。

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

15

試す

for line in $(mysql -u... -p... -AN -e "show tables from NameDataBase");
do 
mysqldump -u... -p.... NameDataBase $line > $line.sql ; 
done
  • $ lineテント名テーブル;)

1
これは、データベースを個別のテーブルクエリにダンプするのに便利です-オプションが正確に何をしているのでしょうか?
xiankai 2013年

こんにちは、-AN(-no-auto-rehash、-A | --skip-column-names、-N結果に列名を書き込まないでください。)-e(-execute = statement、-e statement | Executeステートメントと終了。デフォルトの出力形式は--batchで生成されたものと同じです。)fuente:dev.mysql.com/doc/refman/5.6/en/mysql-command-options.html
Robin Gomez

12

以下のような特定の条件で特定のテーブルのmysqlダンプを取得できます

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

テーブルに特定のwhere条件を追加する場合は、次のコマンドを使用できます

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

8

を使用して選択したテーブルを簡単にダンプしMYSQLWorkbench tool、個別に、または1つのダンプでテーブルのグループを使用して、次のようにインポートできます。uがローカルで実行されている場合は、-h IP.ADDRESS.NUMBER after-u を追加して、ホスト情報を追加できます。ユーザー名

mysql -u root -p databasename < dumpfileFOurTableInOneDump.sql 

残念ながら、Mysql Workbenchにはいくつかのエスケープ問題があり、役に立たない無効なデータのエクスポートにつながる可能性があります...
barell

6

次のコードを使用できます。

この例では、sugacrmデータベースのバックアップを取り、出力をsugarcrm.sqlにダンプします。

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

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

sugarcrm.sqlには、sugacrmデータベース内のすべてのテーブルのドロップテーブル、テーブルの作成、および挿入コマンドが含まれます。以下は、sugarcrm.sqlの部分的な出力で、accounts_contactsテーブルのダンプ情報を示しています。

-

-テーブルのテーブル構造 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

以下のコードを使用できます。

  1. 単一テーブル構造のみのバックアップの場合

-

mysqldump -d <database name> <tablename> > <filename.sql>
  1. データを含む単一テーブル構造の場合

-

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

それがお役に立てば幸いです。


5

mysqldumpコマンドラインから使用することもできます。

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

MySQL Workbenchを使用することもできます。

左に移動>データのエクスポート>スキーマの選択>テーブルを選択し、エクスポートをクリックします


ほんの少しの情報で、-pとパスワードの間のスペースを省略-> -ppasswordですが、安全ではありません
Agung
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.