什么是使用Java将XML数据加载到mySql的最佳方式?
问题描述:
我已经在使用JAVA优化与数据库的交互了。 第一步,我开始将XML数据加载到mysql。 我发现有很多的文章在这个问题上的工作,他们将它,喜欢这篇文章之前,解析数据: https://dzone.com/articles/load-xml-into-mysql-using-java什么是使用Java将XML数据加载到mySql的最佳方式?
但我试图做的事情更简单:所以 我写这篇文章的代码使用加载本地XML INFILE加载数据..(一个SQL查询),它运作良好。
package my.project;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class App {
static final String dbUrl = "jdbc:mysql://localhost/dbOptimization";
static final String password = "azerty";
static final String user = "root";
public Connection conn;
/*
* Load jdbc Driver
*/
static {
try {
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Dirver loaded");
} catch (ClassNotFoundException ex) {
System.err.println("Cannot load driver " + ex);
}
}
/*
* Connect to DB
*/
public void connect() {
try {
conn = DriverManager.getConnection(dbUrl, user, password);
System.out.println("Database connected!");
} catch (SQLException e) {
System.err.println("Cannot connect the database!");
}
}
/*
* Create Table and Load Data
*/
public void createTable() {
try {
conn.createStatement().execute("create Table badges(Id INTEGER,UserId VARCHAR(20),Name varchar(20),Date DATE ,Class INTEGER ,TagBased VARCHAR(20))");
System.out.println("table created");
conn.createStatement().execute("Load xml local infile '/home/lenovo/Bureau/Project/3dprinting/Badges.xml'into Table badges(Id,UserId,Name,Date,Class,TagBased)");
System.out.println("data parsed");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("connot create Table" + e);
}
}
public static void main(String[] args) {
System.out.println("Hello World!");
App app =new App();
app.connect();
app.createTable();
}
}
那么请问,我的代码有问题吗? 每种方法的优缺点是什么? 哪一个具有更好的性能?
感谢
答
答案取决于你是否打算使用XML作为一个整体文件或没有。
如果使用XPath搜索文档内部的解析和加载可能是有意义的。
该objectif是从一个XML文件加载数据到MySQL表。 和这两种方法只是这样做。 甚至当他们解析xml文件时,目标是使用这个解析的数据将它插入到mys表中我错了吗?或者我可能没有明白你的意思 –
如果你从不在文档内搜索来访问它,那么没有理由在数据库中解析。如果您始终使用整个文档并使用ID或元数据访问它,则可以使用NoSQL替代方法。 – duffymo
感谢duffymo,第二步将是NoSQL的替代方案。但现在,我只需将整个文件加载到MySQL中,然后进行一些SQL查询 –