Как прочитать данные из файла XML и сохранить их в базе данных (MySQL)? - PullRequest
4 голосов
/ 09 октября 2009

Мне нужно получить данные из файла XML и сохранить их в базе данных MySQL. Я думаю об использовании SAX Parser для анализа данных, но я не уверен, как эффективно хранить данные в базе данных, я имею в виду несколько технологий, таких как JDBC и Hibernate , но я хотел спросить о том, что будет эффективным способом сделать это?

Примечание: здесь языком программирования является Java.

Ответы [ 4 ]

4 голосов
/ 09 октября 2009

Я бы предложил использовать JAXB для чтения объектов XML в Java и JPA для записи их в базу данных. Вы можете создать единую модель данных с использованием классов Java, которые имеют аннотации для привязки XML с использованием JAXB и аннотации постоянства базы данных с использованием JPA.

@Entity
@Table(name="Foo")
@XmlRootElement
public class Foo {
    // ...
}

Информация о аннотациях JAXB . Информация о JPA .

1 голос
/ 09 октября 2009

Вы можете использовать Castor witch - это инфраструктура привязки данных с открытым исходным кодом для перемещения данных из Объекты языка программирования XML в Java и из Java в базы данных.

Я также нашел серию статей в IBM developerWorks , в которых описывается использование Castor для ваших нужд.

0 голосов
/ 09 октября 2009

Вы можете хранить XML в mySQL напрямую, используя blob ... если вам нужна эффективная индексация и высокая производительность, VTD-XML имеет встроенную возможность индексирования / запроса / обновления XML-документа, что делает его лучшей альтернативой, чем SAX и DOM вот ссылка на соответствующую статью

Индексировать документы XML с помощью VTD-XML

0 голосов
/ 09 октября 2009

Это зависит от многих факторов. Если ваш XML слишком велик (> 1 ГБ или сопоставим с вашей общей памятью), тогда вам следует использовать SAX, и я не думаю, что будут другие решения. Если он небольшой (скажем, меньше 100 МБ), просто загрузите весь XML в объект Document, используя JAXP:

DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder parser = documentBuilderFactory.newDocumentBuilder();
Document doc = parser.parse(source);

Возможно, у вас есть элементы или атрибуты, сопоставленные со столбцами в БД. Затем вы можете запросить элементы / атрибуты с помощью XPath для простоты и записать их в БД. Если это однократное преобразование, я рекомендую использовать простой JDBC. Не думайте о JPA или Hibernate, поскольку это просто увеличивает время разработки для обычного сценария преобразования данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...