您将如何从 java 程序将 .sql 文件加载到 mysql 数据库中?我尝试从自包含的 jar 中提取 sql 资源文件,我尝试使用 processBuilder 来定位和运行外部 shell 命令。我已经尝试了所有方法,但似乎没有一个是正确的方法。
因此,要查看我遇到的问题,只需执行以下操作:
在任何数据库上做一个 mysqldump:mysqldump -uroot --routines myDB > ~/Desktop/myDB.sql
现在让我们尝试从 java/jdbc api 重新创建整个数据库。如何使用我们的 mydB.sql 文件正确且正确地做到这一点?
认为您创建了一个很好的 jdbc 语句来循环您的数据库文件可能会很好,但是当您确实获得这样的转储部分时,它会变得丑陋和笨拙
问题一将遇到以下示例:
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!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 */;
--
-- Table structure for table `DOG`
--
DROP TABLE IF EXISTS `DOG`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `DOG` (
`DOG_ID` mediumint(9) NOT NULL,
`OWNER_ID` mediumint(9) NOT NULL,
PRIMARY KEY (`DOG_ID`),
KEY `CHANNEL_FK1` (`OWNER_ID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
这是jdbc的限制吗?是否有一些我缺少的不错的 api,我可以像 mysql.createDatabase(myDB.sql) 一样调用它们。