2017-08-27 94 views
0

我已经在使用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(); 
    } 
} 

那么请问,我的代码有问题吗? 每种方法的优缺点是什么? 哪一个具有更好的性能?

感谢

回答

0

答案取决于你是否打算使用XML作为一个整体文件或没有。

如果使用XPath搜索文档内部的解析和加载可能是有意义的。

+0

该objectif是从一个XML文件加载数据到MySQL表。 和这两种方法只是这样做。 甚至当他们解析xml文件时,目标是使用这个解析的数据将它插入到mys表中我错了吗?或者我可能没有明白你的意思 –

+0

如果你从不在文档内搜索来访问它,那么没有理由在数据库中解析。如果您始终使用整个文档并使用ID或元数据访问它,则可以使用NoSQL替代方法。 – duffymo

+0

感谢duffymo,第二步将是NoSQL的替代方案。但现在,我只需将整个文件加载到MySQL中,然后进行一些SQL查询 –

相关问题