我正在通过系统调用使用MySQLDump从一个数据库中导出表,然后(选择性地)将它们导入另一个数据库中。我的问题是,在源数据库服务器上,某些表位于不同的(加密的)目录中,而在目标服务器上,则没有目标数据目录。

我当前的命令如下所示:



mysqldump --skip-opt --skip-comments --no-create-db --disable-keys
  --extended-insert --quick --create-options --login-path=sourcedb
  source_database_name source_table |
mysql --login-path=targetdb target_database_name


在存储在加密磁盘上的那些表上,转储看起来像这样:



/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `AnExampleTable` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `type_id` int unsigned DEFAULT NULL COMMENT 'FK The system type.',
  `resource` varchar(64) DEFAULT NULL COMMENT,
  `created_at` timestamp DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`ActionSystemPendingId`),
  UNIQUE KEY `resource_type` (`type_id`,`resource`),
  KEY `created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 DATA DIRECTORY='/mnt/mysqlEncrpyted/';
/*!40101 SET character_set_client = @saved_cs_client */;

/*!40000 ALTER TABLE `AnExampleTable` DISABLE KEYS */;
-- data inserts
/*!40000 ALTER TABLE `AnExampleTable` ENABLE KEYS */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;


基本上,我要做的就是从查询中删除DATA DIRECTORY='/mnt/mysqlEncrpyted/',而不必求助于sed

这是通过系统调用完成的(如我所说),有些表很好,因为它们不位于特殊的数据目录中。我想要的只是一个将其剥离的标志。

最佳答案

没有这样的选择。 mysqldump使用服务器从SHOW CREATE TABLE生成的输出来生成其输出。它不会从头开始构建输出。

使用sed。或通过Perl或类似工具进行传递。

关于mysql - 不带“数据目录”的MySQLDump,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40023893/

10-12 12:46
查看更多