簡體   English   中英

如何備份 MySQL 數據庫中的單個表?

[英]How to take backup of a single table in a MySQL database?

默認情況下, mysqldump會備份整個數據庫。 我需要在 MySQL 中備份一個表。 可能嗎? 我該如何恢復它?

從.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

mysqldump可以采用 tbl_name 參數,因此它只備份給定的表。

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

嘗試

for line in $(mysql -u... -p... -AN -e "show tables from NameDataBase");
do 
mysqldump -u... -p.... NameDataBase $line > $line.sql ; 
done
  • $line 內容名稱表;)

我們可以在任何給定條件下對任何特定表進行 mysql 轉儲,如下所示

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

如果我們想在表上添加特定的 where 條件,那么我們可以使用以下命令

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

您可以使用MYSQLWorkbench tool輕松轉儲選定的表,單獨或在一個轉儲中導入一組表,然后將其導入如下:如果您在本地運行它,您還可以添加主機信息,方法是在之后添加-h IP.ADDRESS.NUMBER -u 用戶名

mysql -u root -p databasename < dumpfileFOurTableInOneDump.sql 

您可以從命令行使用mysqldump

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

您還可以使用 MySQL 工作台:

Go 向左 > 數據導出 > Select 架構 > Select 表並單擊導出

您可以使用以下代碼:

這個例子備份了sugarcrm數據庫並將output轉儲到sugarcrm.sql

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

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

Sugarcrm.sql 將包含 Sugarcrm 數據庫中所有表的刪除表、創建表和插入命令。 下面是sugarcrm.sql的部分output,顯示accounts_contacts表的dump信息:

--

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

--

您可以使用以下代碼:

  1. 對於單表結構單獨備份

-

mysqldump -d <database name> <tablename> > <filename.sql>
  1. 對於帶有數據的單表結構

-

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

希望它會有所幫助。

只需使用mysqldump -u root database table ,或者如果使用密碼mysqldump -u root -p pass database table

我遇到了這個問題,並想用我們完整的示例來擴展其他人的答案:

這將在它自己的文件中備份模式,然后在自己的文件中備份每個數據庫表。

日期格式意味着您可以在硬盤空間允許的情況下盡可能頻繁地運行它。


DATE=`date '+%Y-%m-%d-%H'`
BACKUP_DIR=backups/
DATABASE_NAME=database_name
mysqldump --column-statistics=0  --user=fake --password=secure --host=10.0.0.1  --routines --triggers --single-transaction --no-data --databases ${DATABASE_NAME} | gzip > ${BACKUP_DIR}${DATE}-${DATABASE_NAME}--schema.sql.gz
for table in $(mysql  --user=fake --password=secure --host=10.0.0.1 -AN -e "SHOW TABLES FROM ${DATABASE_NAME};");
    do
    echo ""
    echo ""
    echo "mysqldump --column-statistics=0  --user=fake --password=secure --host=10.0.0.1 --routines --triggers --single-transaction --databases ${DATABASE_NAME} --tables ${table} | gzip > ${BACKUP_DIR}${DATE}-${DATABASE_NAME}-${table}.sql.gz"
    mysqldump --column-statistics=0  --user=fake --password=secure --host=10.0.0.1 --routines --triggers --single-transaction --databases ${DATABASE_NAME} --tables ${table} | gzip > ${BACKUP_DIR}${DATE}-${DATABASE_NAME}-${table}.sql.gz
done

我們以 bash 腳本每小時運行一次,實際上有 HOUR 檢查,只在白天備份一些表,然后在晚上備份所有表。

為了在驅動器上保留一些空間,腳本還運行它以刪除早於 X 天的備份。

# HOW MANY DAYS SHOULD WE KEEP
DAYS_TO_KEEP=25
DAYSAGO=$(date --date="${DAYS_TO_KEEP} days ago" +"%Y-%m-%d-%H")
echo $DAYSAGO
rm -Rf ${BACKUP_DIR}${DAYSAGO}-*
echo "rm -Rf ${BACKUP_DIR}${DAYSAGO}-*"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM