gpt4 book ai didi

Java/Mysql 如何将整个 SQL 文件注入(inject) mysql 服务器?

转载 作者:行者123 更新时间:2023-11-29 03:43:28 25 4
gpt4 key购买 nike

您将如何从 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) 那样调用它。

最佳答案

  1. 确保 mysql 连接器在您的类路径中,例如 java -cp mysql-connector-java-5.1.13-bin.jar 或者如果您使用 ant 或 NetBeans 构建项目,请确保 mysql 连接器是作为一个库包含在内,这样当你构建你的项目时,java -jar YourApplication.jar 应该找到 lib/mysql-connector-java-5.1.13-bin.jar 或者什么。
  2. 在您的源代码中,加载驱动程序:Class.forName("com.mysql.jdbc.Driver").newInstance();
  3. 加载您的 .sql 文件:String sql = new Scanner(new File("yourfile.sql")).useDelimiter("\Z").next();
  4. 连接到你的数据库:Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/database",username,password);
  5. 执行你的sql:Statement st = conn.createStatement();st.execute(sql);

以上假定您的 .sql 文件包含 SQL 语句。

关于Java/Mysql 如何将整个 SQL 文件注入(inject) mysql 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10142687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com