web-dev-qa-db-ja.com

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

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

393
Mandar Pande

.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)フォーマットから単一のテーブルをダンプして復元する

クレジット: ジョンマクグラス

ダンプ

mysqldump db_name table_name | gzip > table_name.sql.gz

復元

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

748
Ozair Kafray

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

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

試してみる

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

以下のような条件で、特定のテーブルのMySQLダンプを取ることができます。

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

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

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

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

mysql -u root -p databasename < dumpfileFOurTableInOneDump.sql 
8
danielad

このコードを使うことができます:

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

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

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

Sugarcrm.sqlは、sugarcrmデータベース内のすべてのテーブルに対するdrop table、create table、およびinsertコマンドを含みます。以下は、accounts_contactsテーブルのダンプ情報を示すsugarcrm.sqlの部分的な出力です。

-

- テーブル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;

--
6
Linda Martin

以下のコードを使うことができます。

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

-

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

-

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

それが役立つことを願っています。

3
Phoenix

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

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

MySQL Workbenchも使用できます。

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

3
SAM AB