Форум программистов, компьютерный форум, киберфорум
Java: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 20.12.2008
Сообщений: 11

Помогите сгенерировать sql insert на основании xml

20.12.2008, 11:11. Показов 4395. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть xml файл, все содержимое нужно перенести в MySQL базу данных.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.12.2008, 11:11
Ответы с готовыми решениями:

Помогите разобраться со считыванием данных с XML-файла в MS SQL таблицу.
Задание Приходят XML-файлы нужно считать данные и записать в SQL таблицу. SQL-2000 должен поддерживать выполение процедуры...

Создание XML на основании схемы XSD
Здравствуйте, коллеги. Заранее сообщу, что перерыла множество информации в просторах интернета, но задача так и осталась не решенной. ...

Формирование ряда массивов на основании загруженных из xml данных
Приветствую всех! Делаю парсинг данных из файла xml с помощью функции .each(function() Получаю три набора данных. Как можно упорядочить...

23
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
20.12.2008, 15:42
ну вы бы хоть для приличия кусок xml файла кинули, что ли...

тут нужно писать скрипт/прогу на чем хочешь, парсить xml и закидывать в базу.
0
0 / 0 / 0
Регистрация: 20.12.2008
Сообщений: 11
21.12.2008, 08:45  [ТС]
Вот часть xml файла.

<order>
<item>
<name>Soccer Ball</name>
<price>15.00</price>
<quantity>5</quantity>
</item>
...
</order>
Не могли бы Вы более подробно написать как это делать. Буду Вам очень признательна.
0
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
21.12.2008, 14:42
мог бы, но ответьте, Надя, на следующие вопросы:

1. раз вы постите сюда, значит, тут вы получите, скорее всего, решение на Java. Стоит у вас Java SDK или Java Runtime (в командной строке наберите 'java -version'. укажите и версию тоже.

2. если у вас рантайм, то нужно постить скомпилированный файл, что сложно, учитывая, что неизвестна база данных, с которой вы работаете. укажите это тоже.

3. если вы хотите уж совсем готовое решение, то укажите data schema вашей таблицы (типы данных).

вот, значит. сама схема работы несложная, но если все стоит и работает (типа java-driver для базы). без ответов на эти вопросы можно написать примерный кусок кода, который все равно компилироваться НЕ БУДЕТ, если не знать всего остального.

так что, ждем надеюсь, со временем, хоть нормально у вас?

best regards
0
4 / 4 / 4
Регистрация: 28.08.2008
Сообщений: 611
21.12.2008, 16:54
Жестко, но элегантно :-)))
0
0 / 0 / 0
Регистрация: 20.12.2008
Сообщений: 11
22.12.2008, 07:48  [ТС]
Спасибо, что согласились помочь. Я просто с этим еще не сталкивалась. Поэтому мне сходу трудно самой разобраться.
Да, я хочу получить решение на java.
Java SDK 1.1.8
Типы данных: char.
У меня все стоит и работает.
Заранее спасибо.
0
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
22.12.2008, 13:25
значит, Надя, продолжаем.

с такой явой (это еще наверное, Microsoft), каши не сваришь. (вообще-то можно, но тогда код будет очень непонятный, и неизвестно, как долго ошибки потом отлавливать).

проще всего будет в вашем случае:

1. http://java.sun.com/j2se/1.4/download.html берем и скачиваем для вашей платформы.

2. все-таки узнаем _название_ базы данных. (MySQL, Oracle, DB2, PostgreSQL, etc.)

после этого можно слать готовый код
0
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
22.12.2008, 13:25
да, уточняю - скачиваем SDK, а не JRE
0
0 / 0 / 0
Регистрация: 20.12.2008
Сообщений: 11
22.12.2008, 17:11  [ТС]
База данных MySQL
0
0 / 0 / 0
Регистрация: 20.12.2008
Сообщений: 11
22.12.2008, 17:13  [ТС]
Название lab
0
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
22.12.2008, 18:42
ну вот, значит. очень грязное решение на скорую руку, но сработает. если нужно получить хорошую оценку по лабораторной или чего там еще, то придется подлизать вам, Надя, этот код.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
 
/*
 * XML2MySQL.java
 *
 * Created on 15 October 2002, 15:31
 */
 
/**
 *
 * @author  Andrew Perepelytsya
 */
public class XML2MySQL {
    
    public static final String MYSQL_DRIVER_CLASS = 'com.mysql.jdbc.Driver';
    // если используется более старый драйвер, то тогда:
    // public static final String MYSQL_DRIVER_CLASS = 'org.gjt.mm.mysql.Driver';
    
    // подставляем нужный адрес и имя базы
    public static final String DB_URL = 'jdbc:mysql://localhost/lab';
    
    // подставляем имя и путь вашего xml файла
    public static final String XML_FILE_URL = 'orders.xml';
    
    // подставляем нужный SQL запрос
    public static final String SQL_UPDATE = 'insert into ORDER_ITEMS (name, price, quantity) values (?, ?, ?)';
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception {
        Class.forName(MYSQL_DRIVER_CLASS).newInstance();
        
        Connection conn = DriverManager.getConnection(DB_URL);
        
        // поехала XML возня
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        
        Document doc = db.parse(new File(XML_FILE_URL));
        
        // получаем корень xml документа
        Element root = doc.getDocumentElement();
        
        // берем все orders
        NodeList orders = root.getElementsByTagName('order');
        
        PreparedStatement pstmt = conn.prepareStatement(SQL_UPDATE);
        
        // проходим через все orders
        for (int i = 0; i < orders.getLength(); i++)
        {
            Node anOrder = orders.item(i);
            
            // проходим через каждый order
            
            Node item = anOrder.getFirstChild();  // <item>
            Node nameNode = item.getFirstChild(); // <name>
            Node priceNode = item.getNextSibling(); // <price>
            Node qNode = item.getNextSibling();   // <quantity>
            
            // вставляем в базу
            pstmt.setString(1, nameNode.getFirstChild().getNodeValue());
            pstmt.setDouble(2, Double.parseDouble(priceNode.getFirstChild().getNodeValue()));
            pstmt.setInt(3, Integer.parseInt(qNode.getFirstChild().getNodeValue()));
            
            if (pstmt.executeUpdate() != 1) throw new Exception('Error while inserting a record');
            // готовимся к следующему разу
            pstmt.clearParameters();
        }
        
        conn.close();
    }
    
}
regards
0
0 / 0 / 0
Регистрация: 20.12.2008
Сообщений: 11
23.12.2008, 10:27  [ТС]
Огромное вам спасибо!!!!
0
0 / 0 / 0
Регистрация: 07.11.2008
Сообщений: 8
24.12.2008, 17:20
Можно просто трансфоримть XML с помощью XSLT
в обычный SQL
0
al
25.12.2008, 00:09
to rjak:
если не труднo, мoжнo пример?
0 / 0 / 0
Регистрация: 07.11.2008
Сообщений: 8
25.12.2008, 14:27
А вот пример
1. создай файлы 1.xml и 1.xsl (вырежи и вставь)
2. посмотри 1.xml в MSInternetExplorer 6.0 (просто он может трансформить)
// если его нет токда нужно самому написать

======================================== ===========================
XML
======================================== ===========================
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version='1.0' encoding='windows-1251'?>
 
<!-- обрати внимание на эту строку -->
<?xml-stylesheet type='text/xsl' href='1.xsl'?>
 
<order>
 
 <item>
   <name>Soccer Ball</name>
   <price>15.00</price>
   <quantity>5</quantity>
 </item>
 
 <item>
   <name>XXX Ball</name>
   <price>94.99</price>
   <quantity>33</quantity>
 </item>
 
</order>
======================================== ===========================
XSL
======================================== ===========================
XML
1
2
3
4
5
6
7
8
9
10
<?xml version='1.0' encoding='windows-1251'?>
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>
<xsl:template match='order'>
     <xsl:apply-templates select='item'/>
</xsl:template>
<xsl:template match='item'>
insert into item ( name,price,quantuty)
values ('<xsl:value-of select='name'/>','<xsl:value-of select='price'/>','<xsl:value-of select='quantuty'/>');
</xsl:template>
</xsl:stylesheet>
======================================== ===========================
Java
//вот исходник 'работающего' трансформера (не проверял но должен работать
// на случае если нет MSIE6
//
======================================== ===========================
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.w3c.dom.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
import java.io.*;
 
public class Stylizer
{
    static Document document;
    public static void main (String argv [])   {
        if (argv.length != 2) {
            System.err.println ('Usage: java Stylizer [stylesheet] [xmlfile]');
            System.exit (1);
        }
 
        DocumentBuilderFactory factory =   DocumentBuilderFactory.newInstance();
        try {
            File stylesheet = new File(argv[0]);
            File datafile   = new File(argv[1]);
            DocumentBuilder builder = factory.newDocumentBuilder();
            document = builder.parse(datafile);
            TransformerFactory tFactory =
                TransformerFactory.newInstance();
            StreamSource stylesource = new StreamSource(stylesheet);
            Transformer transformer = tFactory.newTransformer(stylesource);
            DOMSource source = new DOMSource(document);
            StreamResult result = new StreamResult(System.out);
            transformer.transform(source, result);
           
        } catch (Exception ex) {
           System.out.println ('
** Transformer Factory error');
           System.out.println('   ' + ex.getMessage() );
               x = ex.getException().printStackTrace();
     
       } 
 
    } 
 
}
0
0 / 0 / 0
Регистрация: 31.12.2008
Сообщений: 7
31.12.2008, 08:23
А если xml файл внутри тега имееет еще теги, то как внести их в БД.
Помогите пожалуйста.

<test defined='here' name='физика'>
<name_rus>физика</name_rus>
<name_eng>physics</name_eng>
<def>
Ньютон
<phys height='32' width='83' alttext='F = m*g' />
Идет текст
<center>
<phys height='36' width='196' alttext='g = 9,87' />
</center>
</definition>
<lit>
<author>Русаков</author>
</lit>
0
0 / 0 / 0
Регистрация: 07.11.2008
Сообщений: 8
31.12.2008, 14:21
все зависит от структуры твоей базы
и от того как ты заносиш

// каждый тег это поле?
// если нет то нет и смысла писать эти теги
// если же они используюися для форматирования
// то возьми их в <![CDATA[... этот текст будет интерпритирован как обычный текст даже если здесь написать вот так <br/> или вот так <table border='1'><></table> ...]]>
0
0 / 0 / 0
Регистрация: 31.12.2008
Сообщений: 7
01.01.2009, 07:09
БД MySQL.

Структура следущая.
поле def в БД, должно занестись в одну колонку. С этим то и вопрос. И надо, что туда занеслась вся информация с тегами. Т.к. внутри могут быть еще и ссылки.
Если брать программу для Нади, можно писать т.к.
nameNode.getFirstChild().toString()); ????
Или так делать нельзя? При этом нельзя изменять структуру xml файла.
0
0 / 0 / 0
Регистрация: 07.11.2008
Сообщений: 8
01.01.2009, 11:17
возьми их в <![CDATA[... этот текст будет интерпритирован как обычный текст даже если здесь написать вот так <br/> или вот так <table border='1'><></table> ...]]>
0
0 / 0 / 0
Регистрация: 31.12.2008
Сообщений: 7
01.01.2009, 12:21
Я только что так попыталась сделать ничего не получилось. Я написала в <![CDATA[...]]> Но программа вообще ничего не выдает, хотя сам xml документ в порядке. В чем дело?
А во вторых, мне нужно будет потом с этими данными работать, не как с простым текстом. Может можно, что-то другое сделать не изменяя структуры xml файла?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.01.2009, 12:21
Помогаю со студенческими работами здесь

Вывод из XML файла в textbox на основании выбора в listbox
Есть xml файл: &lt;МатеринскиеПлаты&gt; &lt;плата&gt; &lt;производитель&gt;Biostar&lt;/производитель&gt; &lt;сокет&gt;AM2+&lt;/сокет&gt; ...

Как отрисовать прямоугольник при помощи JS на основании xml?
1. (x0,y0) Левый верхний угол. 2. (x1,y1) Правый нижний угол. Данные представлены в xml url xml файла известен.

Чем сгенерировать sitemap.xml
Чем сгенерировать sitemap.xml большого сайта? 3-4000 страниц.

Как сгенерировать .xml файл?
Есть вордовский файл с табличкой. Хотелось бы сделать кнопку, по нажатии которой данные из некоторых ячеек попадали во внешний .xml файл....

Как сгенерировать xml-файл
В общем принимаю я необходимые значения, подставляю нужные теги в echo и генерирую xml-файл после нажатия на кнопку. Проблема: после...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru