Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 11.07.2017, 15:29   #1
Heneken87
Форумчанин
 
Регистрация: 27.04.2012
Сообщений: 168
Репутация: 39
По умолчанию bulkCopy MsSQL

Ув. профессионалы требуется ваша помощь в решении задачи. Есть TclientDataSet из которого нужно массово вставить данные в таблицы БД под управлением MsSQl сервера. Как это вообще организовывается в Delphi? С помощью адаптера или есть другие методы. Средствами самого SQL делается все просто:
insert into TableA (CODE,NAME) values(
(select TableB.Code,TableB.Name from TableB ))
Как из Delphi передать TableB ?
P/S Заранее спасибо
__________________
Пишу много и развернуто
Heneken87 вне форума   Ответить с цитированием
Старый 11.07.2017, 16:02   #2
evg_m
Профессионал
 
Регистрация: 20.04.2008
Сообщений: 4,741
Репутация: 2097
По умолчанию

сделать из clientdataset что-то что сможет понять MS SQL
например xml http://www.programmersforum.ru/showthread.php?t=267440
__________________
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума   Ответить с цитированием
Старый 11.07.2017, 16:45   #3
Heneken87
Форумчанин
 
Регистрация: 27.04.2012
Сообщений: 168
Репутация: 39
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
сделать из clientdataset что-то что сможет понять MS SQL
например xml http://www.programmersforum.ru/showthread.php?t=267440
Спасибо за пример. Но этот метод подразумевает вставку из файла находящегося на сервере.
P/S^ У меня файлик как раз XML. Хочется пример передачи массива данных от клиента на сервер.
По сути insert into TableA (N1,N2,N3) values (1,2,3) это вставка одномерного массива , неужели нет возможности вставки матрицы
__________________
Пишу много и развернуто

Последний раз редактировалось Heneken87; 11.07.2017 в 16:50.
Heneken87 вне форума   Ответить с цитированием
Старый 11.07.2017, 17:01   #4
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,489
Репутация: 5308
По умолчанию

Цитата:
Сообщение от Heneken87 Посмотреть сообщение
неужели нет возможности вставки матрицы
имхо, нет.
хотите с клиента вставлять - вставляйте в цикле по одной записи.
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 11.07.2017, 17:09   #5
Heneken87
Форумчанин
 
Регистрация: 27.04.2012
Сообщений: 168
Репутация: 39
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
имхо, нет.
хотите с клиента вставлять - вставляйте в цикле по одной записи.
Иными словами для ускорения процесса вырубаем индексы и не делаем коммит после каждой вставки
__________________
Пишу много и развернуто
Heneken87 вне форума   Ответить с цитированием
Старый 11.07.2017, 17:33   #6
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 24,489
Репутация: 5308
По умолчанию

Цитата:
Сообщение от Heneken87 Посмотреть сообщение
Иными словами для ускорения процесса вырубаем индексы и не делаем коммит после каждой вставки
точно.
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 11.07.2017, 19:52   #7
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 17,990
Репутация: 6304
По умолчанию

В общем-то можно. Сгенерировать xtr-файл с помощью XML Mapper как Insert Delta, позаботиться при этом что бы имена и типы полей соответствовали таблице, в которую инсертить будем. Открыть нацеленный на эту таблицу пустой клиентдатасет. С помощью XMLTransform загнать в ClientDataSet.XMLData данные из XMLTransform.Data. И ApplyUpdates ))
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума   Ответить с цитированием
Старый 11.07.2017, 20:01   #8
Heneken87
Форумчанин
 
Регистрация: 27.04.2012
Сообщений: 168
Репутация: 39
По умолчанию

Цитата:
Открыть нацеленный на эту таблицу пустой клиентдатасет.
Созданный в самой БД?
Цитата:
ApplyUpdates
Это смотреть в сторону адаптеров?
P/S Если XML сложной вложенной структуры и я верно понял идею, то нужно будет поизвращаться так же на славу только в самой БД? =)
__________________
Пишу много и развернуто

Последний раз редактировалось Heneken87; 11.07.2017 в 20:05.
Heneken87 вне форума   Ответить с цитированием
Старый 11.07.2017, 20:05   #9
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 17,990
Репутация: 6304
По умолчанию

Цитата:
В БД создать?
Табличка в базе должна быть конечно и не обязательно пустая. Просто в клиентдасет выбрать из неё 0 записей по какому-то условию.
Цитата:
ApplyUpdates
Это метод клиентдатасета
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума   Ответить с цитированием
Старый 11.07.2017, 20:07   #10
Heneken87
Форумчанин
 
Регистрация: 27.04.2012
Сообщений: 168
Репутация: 39
По умолчанию

Понял. Большое спасибо.
__________________
Пишу много и развернуто
Heneken87 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
insert into MsSql stalsoft Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 3 07.11.2012 15:38
MSSQL Xe-Xe SQL, базы данных 4 31.10.2011 15:39
Запросы в MSSQL Hookis1 Фриланс 9 17.04.2010 18:08
C# + MSSQL dampirik Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 3 17.12.2009 02:40
mssql + с# dampirik SQL, базы данных 1 14.12.2009 20:03


00:09.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru