欢迎访问OceanBase官网获取更多信息:https://www.oceanbase.com/
MySQLDump 是 MySQL 提供的用于导出 MySQL 数据库对象和数据的工具。您可通过参数 --help
查看使用帮助,此处主要列举 mysqldump 常用的场景命令和参数搭配。
导出指定数据库的表结构(不包括数据)
您可运行下述命令导出指定数据库的表结构(不包括数据)。
mysqldump -h 127.1 -ur*** -P3306 -p123456 -d TPCH --compact > tpch_ddl.sql
复制
导出来的脚本有如下特征:
脚本包含视图定义,但是会以
/ *!* /
注释。我们不关注视图,可以删除这部分内容。脚本包含 OceanBase MySQL 不支持的语法,但是不影响,替换了即可。比如变量
SQL_NOTES
和DEFINER
语句等。 例如:导出的脚本里包含MAX_ROWS=
的设置,这个是 MySQL 特有的语法,OceanBase MySQL 不支持该语法,执行会报错。/*!40101 SET character_set_client = @saved_cs_client */; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `NATION` ( `N_NATIONKEY` int(11) NOT NULL, `N_NAME` char(25) COLLATE utf8_unicode_ci NOT NULL, `N_REGIONKEY` int(11) NOT NULL, `N_COMMENT` varchar(152) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`N_NATIONKEY`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci MAX_ROWS=4294967295;
复制您可把所有
MAX_ROWS=
以及后面部分批量注释掉。如在vim
中使用:%s/MAX_ROWS=/; -- MAX_ROWS=/g
。在导出的表结构语句里,可能包含外键。在导入 OceanBase MySQL 时,如果外键依赖的表没有创建,导入脚本会报错。因此导入之前需禁用外键检查约束。
MySQL [oceanbase]> set global foreign_key_checks=off; Query OK, 0 rows affected (0.01 sec) MySQL [oceanbase]> show global variables like '%foreign%'; +--------------------+-------+ | Variable_name | Value | +--------------------+-------+ | foreign_key_checks | OFF | +--------------------+-------+ 1 row in set (0.00 sec)
复制
修改后,退出会话并重新登录。在 obclient 客户端通过 source
命令执行外部 SQL 脚本文件。
欢迎访问OceanBase官网获取更多信息:https://www.oceanbase.com/
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。