在Java中连接MongoDB和MySQL,从MongoDB中检索数据并将其存储到MySQL中,您需要使用适当的Java库,如MongoDB Java驱动程序和MySQL连接器。以下是一个简单的示例项目,展示了如何执行这些操作:
首先,确保您已经安装了MongoDB和MySQL,并在这两个数据库中创建了适当的表和集合。
接下来,创建一个Java项目,并将所需的MongoDB和MySQL库添加到项目的依赖项中。您可以使用 Maven 或 Gradle 进行依赖项管理。以下是一个Maven项目的示例 pom.xml
文件:
xml
<dependencies>
<!-- MongoDB Java Driver -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>4.3.0</version>
</dependency>
<!-- MySQL Connector/J -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
</dependencies>
然后,创建一个Java类,该类将连接到MongoDB,检索数据,然后将其存储到MySQL中。以下是一个示例类的代码:
java
import com.mongodb.client.*;
import com.mongodb.client.model.Filters;
import org.bson.Document;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class MongoToMysql {
public static void main(String[] args) {
// MongoDB连接信息
String mongoHost = "localhost";
int mongoPort = 27017;
String dbName = "your_mongodb_database";
String collectionName = "your_mongodb_collection";
// MySQL连接信息
String mysqlUrl = "jdbc:mysql://localhost:3306/your_mysql_database";
String mysqlUser = "your_mysql_user";
String mysqlPassword = "your_mysql_password";
// 设置MongoDB日志级别,以减少不必要的日志输出
Logger mongoLogger = Logger.getLogger("org.mongodb.driver");
mongoLogger.setLevel(Level.SEVERE);
try {
// 连接到MongoDB
MongoClient mongoClient = MongoClients.create("mongodb://" + mongoHost + ":" + mongoPort);
MongoDatabase database = mongoClient.getDatabase(dbName);
MongoCollection<Document> collection = database.getCollection(collectionName);
// 从MongoDB中检索数据
Document query = collection.find(Filters.eq("your_field_name", "your_field_value")).first();
// 连接到MySQL
Connection mysqlConnection = DriverManager.getConnection(mysqlUrl, mysqlUser, mysqlPassword);
// 将数据插入到MySQL
if (query != null) {
String dataToInsert = query.toJson();
String insertQuery = "INSERT INTO your_mysql_table (json_data_column) VALUES (?)";
PreparedStatement preparedStatement = mysqlConnection.prepareStatement(insertQuery);
preparedStatement.setString(1, dataToInsert);
preparedStatement.executeUpdate();
System.out.println("Data inserted into MySQL.");
} else {
System.out.println("No data found in MongoDB.");
}
// 关闭连接
mysqlConnection.close();
mongoClient.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
在这个示例中,您需要替换以下内容:
your_mongodb_database
:MongoDB数据库名称。your_mongodb_collection
:MongoDB集合名称。your_field_name
:MongoDB文档中用于查询的字段名。your_field_value
:MongoDB文档中用于查询的字段值。your_mysql_database
:MySQL数据库名称。your_mysql_user
:MySQL用户名。your_mysql_password
:MySQL密码。your_mysql_table
:要插入数据的MySQL表的名称。json_data_column
:MySQL表中用于存储JSON数据的列名。
此示例仅提供了一个基本的框架。根据您的需求和实际数据模型,您可能需要进行更多的调整和错误处理。确保在将此代码用于生产环境之前进行充分测试和安全审查。