|
149 / 117 / 10
Регистрация: 12.09.2011
Сообщений: 785
|
|
Перевод из XML в Access22.12.2013, 16:40. Показов 3870. Ответов 16
Метки нет (Все метки)
Привет всем!
Подскажите, пожалуйста, возможно ли как-то таблицу, сохраненную в XML-формате, быстро перевести в такую же таблицу Access, т.е. как бы конвертировать XML в MDB? Сейчас я это делаю через OleDb путем считывания xml-тэгов и записи их значений в предварительно созданную таблицу Access (INSERT INTO...). Так как записей (строк) в таблице более ста тысяч, естественно, это вся эта процедура перегонки занимает много времени. Можно ли как-то быстро это сделать? Спасибо!
0
|
|
| 22.12.2013, 16:40 | |
|
Ответы с готовыми решениями:
16
Перевод текста в XML перевод из xml в html Access and XML |
|
|
||||||
| 22.12.2013, 18:50 | ||||||
|
Можно так
1
|
||||||
|
149 / 117 / 10
Регистрация: 12.09.2011
Сообщений: 785
|
|
| 23.12.2013, 05:54 [ТС] | |
|
dimsaratov, так а как потом эту DataTable в Access-формат сохранить? Суть в том, что медленно у меня не считывание тэгов происходит, а именно INSERT через OleDb, потому как таким образом можно только по одной строке добавлять, OleDb не позволяет в одном запросе несколько команд использовать - только по одной на запрос.
0
|
|
|
1303 / 509 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
|
||||||
| 23.12.2013, 18:13 | ||||||
|
Я с HML форматом никогда не работал, но те же 100 тыс строк экселя не так уж долго импортировать в таблицу аксес. Можно и несколько миллионов строк за 5-10 мин импортировать. Думаю с hml примерно аналогично все
Эксель импортировать так (в аксе):
А вообще можно в VB создать файл mdb с таблицой (в книжке Лукина это есть) и заполнить ее из DataTable.
0
|
||||||
|
|
||||||
| 23.12.2013, 19:54 | ||||||
1
|
||||||
|
Заблокирован
|
||
| 24.12.2013, 04:13 | ||
Хотя я предпочитаю создавать ADOX'ом, а заполнять - как обычно, через ADO.NET (System.Data.OleDb). ПРОЕКТ -> Добавить ссылку -> COM -> Microsoft ADO Ex **** Далее гугл в помощь.
1
|
||
|
149 / 117 / 10
Регистрация: 12.09.2011
Сообщений: 785
|
||
| 24.12.2013, 13:46 [ТС] | ||
так, я же так и делаю, только OleDb позволяет по одной строчке вгонять в таблицу, а мне нужно именно быстро. Нужно именно VB .NET, потому как программа написана на нем и одна из ее функций это забирать с сервера списки товаров. С web-программистом на стороне заказчика решили, что отдается в xml-формате. Первая версия программы полностью загружала 100-мегабайтный xml-файл в DataSet, на сильных компьютерах это не беда, а вот на нетбуках, которыми пользуются их торговые представители, тормозило страшно. Всё это я ускорил, но только через Access-формат запросами, и вот именно перегонка таблицы в mdb-файл занимает много времени - около четырех минут
0
|
||
|
Заблокирован
|
||
| 24.12.2013, 14:39 | ||
Вот здесь посмотрите, может пригодится. http://mdbtools.sourceforge.net/faq.html На том же сайте вроде и библиотека какая-то есть, не знаю, платная или бесплатная. Кстати, а формат accdb не подошёл бы? Может там ZIP-архив с XML'ем, как, например, в docx и xlsx? Тогда там должно быть легче.
1
|
||
|
149 / 117 / 10
Регистрация: 12.09.2011
Сообщений: 785
|
||
| 25.12.2013, 09:32 [ТС] | ||
|
В принципе, мне любой Access-формат подошел бы... При создании подключения к базе у меня через Try - Catch идет три попытки, одна из которых срабатывает - сначала пытается через JET подключиться, потом через ACE 12 и через ACE 14 (это именно для acdb-форматов)
Добавлено через 17 часов 23 минуты
0
|
||
|
|
|||||||||||
| 25.12.2013, 20:10 | |||||||||||
|
Это был пример подразумевалось что код конфигурирования DataAdapter не представляет сложности
Пример такого кода
1
|
|||||||||||
|
149 / 117 / 10
Регистрация: 12.09.2011
Сообщений: 785
|
|
| 26.12.2013, 13:09 [ТС] | |
|
dimsaratov, разобрался по твоему примеру и таким образом чудесно при Update добавляются строки, но вот при обновлении выдает "Нарушение параллелизма: UpdateCommand затронула 0 из ожидаемых 1 записей"... Уже несколько часов гуглю, ничего не могу найти. Почему не происходит обновление записи, не подскажешь?
0
|
|
|
|
|
| 26.12.2013, 19:15 | |
|
у тебя где то в программе нарушение логики
обычно такое сообщение происходит когда: - добавили новую строку статус стал Added - после этого изменили эту строку статус стал Changed - далее при попытке выполнить команду Update происходит попытка обновить строку отсутствующую в БД либо второй вариант где то ошибка в строке комманды UpdateCommand.CommandText если в логике ошибки нет выкладывай код конфигурирования датаадаптера
1
|
|
|
149 / 117 / 10
Регистрация: 12.09.2011
Сообщений: 785
|
||||||
| 27.12.2013, 10:37 [ТС] | ||||||
|
Адаптер я конфигурирую так (connection это заведомо созданное и открытое подключение к базе):
1
|
||||||
|
|
|
| 27.12.2013, 22:18 | |
|
после команды acceptchanges(принять все изменения) адаптер считает что ВСЕ записи обновлены и обновлять их не нужно
1
|
|
|
149 / 117 / 10
Регистрация: 12.09.2011
Сообщений: 785
|
||
| 29.12.2013, 12:37 [ТС] | ||
|
Так или иначе, видимо, нужно мне отказаться от этой идеи. Дело в том, что я создал подключение к моей таблице с помощью конструктора, и вот там все добавляется, обновляется нормально, но также медленно, как я и до этого делал, а делал просто путем последовательного считывания xml через XmlReader и внесения или изменения данных просто по одному запросу - та же скорость ровно. Видимо, adapter.Update делает ровно тоже самое, что и я
0
|
||
|
|
|
| 29.12.2013, 13:05 | |
|
у меня подобная конструкция загружает в access таблицу 12000 строк х 49 столбцов за 1,5-2 сек.
в любом случае обновление всей таблицы происходит быстрее чем обновление. таблицы по одной записи
1
|
|
|
149 / 117 / 10
Регистрация: 12.09.2011
Сообщений: 785
|
||||||
| 30.12.2013, 16:09 [ТС] | ||||||
|
dimsaratov, интересно! На процедуру перевода моих данных (примерно 72000 строк и 14 колонок) в MDB-формат уходит 4 минуты моим способом - по одному запросу на строку, и почти столько же времени уходит, когда через конструктор подключена таблица: сначала делаю ReadXml, потом adapter.Update... и уходит столько же времени... Меряю не на глаз, а фиксирую Now в переменной в самом начале, потом показываю разницу с Now в конце - около 4-х минут получается. Время-то конечно небольшое, но у меня Core I3, а у торговых представителей заказчика - нетбуки и даже планшеты, короче, у них чуть ли не по полчаса уходит на обновление всех товаров.
Может быть Update одной командой выполняется у меня так же долго, из-за того, что два поля в таблице имеют тип Memo ? Или всё-таки что-то я не так делаю... Ок, буду еще пробовать. Спасибо, в любом случае! Добавлено через 15 минут Кстати, если кому интересно, вот что я делаю чтобы MDB-база не "распухала", ведь удаленные строки фактически не удаляются, а помечаются как удаленные:
1
|
||||||
| 30.12.2013, 16:09 | |
|
Помогаю со студенческими работами здесь
17
XML + Access Перевод текстового файла в XML формат Перевод файла формата txt в xml Экспорт из access в xml Экспорт XML в Access Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|