Mysql
如何從 .sql 文件中僅導入特定數據庫?
我有一個
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