Mysql

使用 MySQLDump 時如何跳過視圖

  • July 8, 2022

我想創建一個命令行腳本,它只備份我數據庫中的表。有沒有辦法做到這一點?

我考慮過只指定表使用

SELECT table_name 
FROM information_schema.TABLES  
WHERE table_schema = 'flight_serve_png'  AND table_type = 'base table'

但希望有一個更簡單的解決方案。

從沒有視圖的給定數據庫中轉儲表

MYSQL_AUTH="-hlocalhost -u... -p..."
DB=mydb
SQL="SET group_concat_max_len = 10485760;"
SQL="${SQL} SELECT GROUP_CONCAT(table_name SEPARATOR ' ')"
SQL="${SQL} FROM information_schema.tables"
SQL="${SQL} WHERE table_schema='${DB}' AND engine IS NOT NULL;"
TBLIST=$(mysql ${MYSQL_AUTH} -ANe"${SQL}")
mysqldump ${MYSQL_AUTH} --single-transaction ${DB} ${TBLIST} > ${DB}_tables.sql

僅從給定數據庫轉儲視圖

MYSQL_AUTH="-hlocalhost -u... -p..."
DB=mydb
SQL="SET group_concat_max_len = 10485760;"
SQL="${SQL} SELECT GROUP_CONCAT(table_name SEPARATOR ' ')"
SQL="${SQL} FROM information_schema.tables"
SQL="${SQL} WHERE table_schema='${DB}' AND engine IS NULL;"
TBLIST=$(mysql ${MYSQL_AUTH} -ANe"${SQL}")
mysqldump ${MYSQL_AUTH} --single-transaction ${DB} ${TBLIST} > ${DB}_views.sql

引用自:https://dba.stackexchange.com/questions/314183