Mysql

如何從 .sql 文件中僅導入特定數據庫?

  • December 5, 2021

我有一個dump.sql包含許多數據庫的文件:mydb1, mydb2, mydb3, 等等。

如何只導入mydb3而不導入其他數據庫?

慣於:

mysql> create database mydb3;
mysql> use mydb3;
mysql> source /path/to/dump.sql;

導入所有數據庫?

您可以使用–one-database選項或-o簡稱:

mysql ... -o mysb3 < /path/to/dump.sql

請注意,上面連結中的文件頁面指出:

此選項是基本的,應謹慎使用。

但是,我認為 mysqldump 創建的轉儲文件應該足夠安全。

注意:這不會執行實際的CREATE DATABASE ...語句,因此您必須在導入之前執行此操作。

試試這個:

sed -n '/^-- Current Database: `mydb1`/,/^-- Current Database: `/p' dump.sql > mydb1.sql

使用 sed 獲取特定表的其他方法:

sed -n -e '/CREATE TABLE.*`table_name`/,/CREATE TABLE/p' "dump_file" > table_name.sql

如果您有.gz.bz2轉儲:

gunzip < fulldump.sql.gz | sed -n -e '/DROP TABLE.*`table_name`/,/UNLOCK TABLES/p' | gzip -c > table_name.gz 

sudo bzip2 -d < fulldump.bz2 | sed -n -e '/DROP TABLE.*`table_name`/,/UNLOCK TABLES/p' | bzip2 -z > table_name.gz 

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